Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 10.05.2012, 22:44
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от B~Vladi
XML тут всё же лучше. Например, можно изначально писать js, html и css в одном файле, не думая о экранировании.
Для меня загадка, к чему это может понадобиться.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #42 (permalink)  
Старый 10.05.2012, 23:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от FINoM
Для меня загадка, к чему это может понадобиться.
Я пишу JS, HTML и CSS в одном файле. Но внутри JS, а не XML.
Ответить с цитированием
  #43 (permalink)  
Старый 11.05.2012, 00:26
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Но внутри JS, а не XML.
Если ты один пишешь то да. Верстаки не очень любят в JS лазить. Из тех кого я знал.

Сообщение от FINoM
Для меня загадка
Для меня загадка - почему все так не любят XML
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 11.05.2012 в 00:29.
Ответить с цитированием
  #44 (permalink)  
Старый 11.05.2012, 10:07
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B~Vladi
Верстаки не очень любят в JS лазить.
Я никогда не понимал, как можно делать интерфейсы, когда один человек пишет HTML, другой -- JS. Это хрень какая-то.
В Яндексе, конечно, годами так жили, но сейчас курс на унификацию специалистов.

Ну и HTML в моём случае всё таки является обычным HTML-ем, просто в файле с расширением .js лежит и в одинарных кавычках. Вебшторм его также подсвечивает и автодополняет.
Ответить с цитированием
  #45 (permalink)  
Старый 11.05.2012, 10:12
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Я никогда не понимал, как можно делать интерфейсы, когда один человек пишет HTML, другой -- JS.
Я так работал, вполне успешно, если верстак не мудак
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #46 (permalink)  
Старый 08.05.2013, 03:55
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Допилил немного функцию, добавил пару вещей, которые несколько вышли за рамки концепции require в ноде. Кроме описанного в голове этого топика функционала
require( 'm.js' );
require( 'm.js', callback );

... появились следующие вещи.
1. Настройки:
require.settings = {
	PATH: '/', // Путь к файлу, например, '/js'. Наряду с постфиксом, можно использовать, как префикс: 'js/app.' для скриптов, типа js/app.script.js
	POSTFIX: '', // Говорит сам за себя. Может использоваться для сокращения длины строки: '.js' или '.module.js'
	CONCAT_ALL: false, // опишу ниже
	DISABLE_CATCHE: false, // добавляет ко всем скриптам рандомную строку: script.js?RANDOM
}


2. Загрузка нескольких модулей:
require( [ 'm1.js', 'm2.js' ], function( m1, m2 ) {
	
});

Если установить настройку
require.settings.CONCAT_ALL = true
то все модули будут соединены в один:
require( [ 'm1.js', 'm2.js' ], function( all ) {
	all.m1.method1()
	all.m2.method2()
});

(свойства могут перетереть друг друга, так что придется следить за тем, чтоб имена методов не совпадали)

3. Передача аргументов. Третьим аргументом служит объект, свойства которого являются глобальными для модуля.
require( 'm.js', callback, {
	a: 3,
	b: 4
});

// m.js
this.method = function() {
	alert( a + b );
};


4. ////@ sourceURL= ...
Теперь можно узнать, в каком модуле и в какой строке возникла ошибка (но не синтаксиса). Работает в нормальных браузерах.


Это всё. Недавно вспомнил об этом скрипте, забыв, с какими трудностями мне пришлось столкнуться и столкнулся с ними снова. Решил заюзать в проекте, который начал пилить, но, в дальнейших проектах, вряд ли буду использовать (хотя, посмотрю еще). Одна из самых серьезных проблем — то, что нельзя отследить место синтаксической ошибки. Хотя, с другой стороны, мой синтаксис позволяет легко переключиться на обычное использование скриптов:
// Для упрощения покажу обычное создание конструктора. В приложении используется другой синтаксис.
Application = function() {
	require( [ 'm1.js', 'm2.js' ], function() { /*...*/ }, { app: this } );
};

// m1.js
app.method1 = function() { /*...*/ }

// m2.js
app.method2 = function() { /*...*/ }


Выкладываю исключительно в ознакомительных целях, так как, возможно, кому-то что-нибудь покажется интересным. Над некоторыми штуками нужно еще поработать и добавить несколько мелочей, например: сделать асинхронную загрузку без передачи колбека, передать аргументы при синхронной загрузке, сохранять скрипты в localStorage (для того, чтоб избежать лишних запросов), но, так как я считаю сам подход недостаточно удобным, не хочу терять время зря, оставляя его в пользу другого, более важного для меня проекта. Если планы изменятся, то, как обычно, воскрешу старый топик

Как обычно, никакой документации, но, в этот раз, я и не обещаю её сделать:
https://github.com/finom/require
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 08.05.2013 в 22:48.
Ответить с цитированием
  #47 (permalink)  
Старый 08.05.2013, 20:20
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от qwerty-клавиатура
 
Регистрация: 12.04.2013
Сообщений: 132

а зачем оно нужно? да и node этот require напрягает, он конченный, автор не мог сделать как в python'е
Ответить с цитированием
  #48 (permalink)  
Старый 08.05.2013, 20:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от qwerty-клавиатура
а зачем оно нужно?
для
Сообщение от FINoM
исключительно в ознакомительных целях
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #49 (permalink)  
Старый 08.05.2013, 20:52
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от qwerty-клавиатура
 
Регистрация: 12.04.2013
Сообщений: 132

function loadScript(url, cb) {
    var d = document, 
        s = d.createElement('script');
    s.src = url;
    s.onload = cb;
    d.head.appendChild(s);
}

function loadScripts(urls, cb) {
    loadScript( urls.shift(), function() {
        if (urls.length) {
            return loadScripts(urls, cb);
        }
        
        cb && cb();
    } );
}
Ответить с цитированием
  #50 (permalink)  
Старый 08.05.2013, 22:57
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

В моей функции возможна асинхронность и изолированность (при желании).

Немного об изолированности. Скажем, у нас есть некая библиотека, написанная сторонним разработчиком, и которая использует объект window, но, на самом деле, в нем не нуждается:
// lib.js
window.method1 = function() { /*1*/ };
window.method2 = function() { /*2*/ };

В таком случае можно заменить window на собственный объект, который служит пространством имен:
var lib = {};
require( 'lib.js', function() {
	console.log( window.method1, window.method2 ); //undefined undefined
	console.log( lib.method1, lib.method2 ); //function() { /*1*/ } function() { /*2*/ }
}, { window: lib } );

Еще раз повторюсь, функция выложена в ознакомительных целях и просто-напросто показывает, что в JS можно сделать «еще и так».
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отловить обратное событие "click" ? jsuse Общие вопросы Javascript 2 18.01.2012 00:16
Как создать таймер, как на Letitbit? free_style Javascript под браузер 1 01.07.2010 17:55
While как условные выражения Latro Общие вопросы Javascript 23 27.06.2010 14:53
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
как можно создать iframe со скриптами GOll Общие вопросы Javascript 2 05.05.2009 11:32