Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #2091 (permalink)  
Старый 06.03.2017, 19:26
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

annyrtd, зачем это здесь?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #2092 (permalink)  
Старый 06.04.2017, 11:38
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Всем привет!

1) Кто что использует на сайте для картинок < 10 kb. Таких картинок, скажем, 40 штук. Спрайт или base64 ?

2) Кто как ресолвит пути к картинкам в gulp(<4) для sass файлов? Понятно, что можно делать и вебпаком, но интересует именно такая ситуация. Пример, структура папок
Код:
/frontend
    /scss
        /header
            header.scss
            loader.gif
header.scss
.header {
    width: 300px;
    height: 300px;
    border: 1px solid red;
    margin: 0 auto;
    background: url('loader.gif') left center no-repeat;
}

Если использовать типа такого
return combiner(
        gulp.src('frontend/scss/**/*.scss', {base: 'frontend/scss'}),
        $.sass({
            outputStyle: !isDevelopment ? 'compressed' : 'nested'
        }),
        $.concat('main.css'),
        gulp.dest('public')
    )

то в public будет такая картина
Код:
/public
    /header
        loader.gif
    main.css
И путь до картинки в main.css не изменится на header/loader.gif.

Написал небольшое решение. Оно работает. Но может как-то проще можно?

const through2 = require('through2').obj;
const rework = require('rework');
const reworkUrl = require('rework-plugin-url');

function prependUrls(css, prepend) {
    return rework(css)
        .use(reworkUrl(function(url) {
            if (url.indexOf('data:') === 0) {
                return url;
            } else {
                const newUrl = prepend + url;
                return newUrl.replace('//', '/');
            }
        }))
        .toString();
}

gulp.task('...', function(){
    return combiner(
        gulp.src('frontend/scss/**/*.scss', {base: 'frontend/scss'}),
        $.sass({
            outputStyle: !isDevelopment ? 'compressed' : 'nested'
        }),
        through2(
            function (file, enc, cb) {
                const prepend = path.dirname(file.relative) + '/';
                const css = prependUrls(file.contents.toString(), prepend);
                file.contents = Buffer.from(css);
                cb(null, file);
            }
        ),
        $.concat('main.css'),
        gulp.dest('public')
    )
})
Ответить с цитированием
  #2093 (permalink)  
Старый 07.04.2017, 07:06
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

Сообщение от destus
1) Кто что использует на сайте для картинок < 10 kb. Таких картинок, скажем, 40 штук. Спрайт или base64 ?
Если применяю тег img - использую base64. Если css background использую спрайты transparent png (+ сжатие) or base64.
В вашем случае лучше спрайт.
Ответить с цитированием
  #2094 (permalink)  
Старый 12.05.2017, 14:51
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Как вы запускаете фоновые задачи для nodejs? Child process?
Например мне нужно что то трудоемкое сделать в фоне что бы не блокировать основной процесс.
Как вы решаете такую задачу? И какие инструменты юзаете?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2095 (permalink)  
Старый 13.05.2017, 00:33
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Под linux exec command > /dev/null 2>&1
Ответить с цитированием
  #2096 (permalink)  
Старый 13.05.2017, 00:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Poznakomlus, да но мне нужно запустить код на ноде, только в другом процессе)
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2097 (permalink)  
Старый 13.05.2017, 00:41
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

так напиши
exec('node myscript.js > /dev/null 2>&1');

таким образом запустишь скрипт в отдельном потоке
https://habrahabr.ru/post/138591/
возможные проблемы
использовать nohup (nohup node myscript.js)
использовать полный путь к бинарнику node

Последний раз редактировалось Vlasenko Fedor, 13.05.2017 в 00:58.
Ответить с цитированием
  #2098 (permalink)  
Старый 13.05.2017, 13:23
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Poznakomlus, ну если так подходить к делу то лучше использовать fork. Но мне я думал о чем то типо kue только без редис
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2099 (permalink)  
Старый 17.05.2017, 23:17
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

async / await
как же мы раньше без этой прелести жили

const fs = require('fs')
const path = require('path')


let rootDir = path.join(__dirname, '..')


// [url]https://github.com/nervgh/koa-architect[/url]
exports.get = {
  'index': async function (ctx) {
    ctx.state.root = await readRoutesRecursive(rootDir, new Node('', 'admin'))
    ctx.render(__dirname, 'views/index')
  }
}


// TODO: Should we move this code to a standalone package?
class Node {
  /**
   * @param {String} prefix
   * @param {String} name
   */
  constructor(prefix, name) {
    this.name = name
    this.path = `${prefix}/${name}`
    this.children = []
  }
  /**
   * @return {Object}
   */
  toJSON() {
    return Object.assign({}, this)
  }
}
/**
 * A few promisified fs methods
 * @type {Object}
 */
const fsp = {
  lstat: promisify(fs.lstat),
  readdir: promisify(fs.readdir)
}
/**
 * @param {String} dir
 * @param {Node} node
 * @return {Promise.<Node>}
 */
async function readRoutesRecursive(dir, node) {
  for(let name of await fsp.readdir(dir)) {
    if (await isDirectory(path.join(dir, name))) {
      let tryMiddleware = path.join(dir, name, 'middleware')
      if (await isDirectory(tryMiddleware)) {
        node.children.push(await readRoutesRecursive(tryMiddleware, new Node(node.path, name)))
      } else {
        node.children.push(new Node(node.path, name))
      }
    }
  }
  return node
}
/**
 * @param {String} pathString
 * @return {Promise.<Boolean>}
 */
async function isDirectory(pathString) {
  try {
    let stat = await fsp.lstat(pathString)
    return stat.isDirectory()
  } catch (err) {
    return false
  }
}
/**
 * @param {Function} fn
 * @param {*} ctx
 * @return {Function}
 */
function promisify(fn, ctx) {
  return (...args) => {
    return new Promise((resolve, reject) => {
      args.push((err, data) => err ? reject(err) : resolve(data))
      fn.apply(ctx, args)
    })
  }
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #2100 (permalink)  
Старый 17.05.2017, 23:37
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

nerv_, мне тоже нравится async/await с koa получается не плохо и + мои декораторы)
@Controller("/test")
export default class {

    @RequestMapping({value: "add", method: RequestMethod.POST})
    async add(ctx) {
        await service.doAction(ctx.request.body.files);
        ctx.redirect("/plugin/list");
    }

    @RequestMapping("/")// by default method GET
    async uploadPageView({render}, params) {
        await render("upload.html");
    }

    @RequestMapping("list")
    async list(ctx) {
        return service.getList();
    }
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 19.05.2017 в 09:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50