2014-02-11 6 views
0

Мы привыкли включать отдельно файлы javascript с использованием стандарта <script src="file.js"></script>, но ... Мне действительно не нравится такой способ включения.Есть ли другие способы включить файл JavaScript?

Что касается разработчика с C#/C++ фоном, многие функции для меня представляют собой беспорядок.

Мне действительно не нравится путь, включая файлы js, но я понимаю, что это самая обычная практика.

С такими мыслями я предполагаю попробовать различные возможные способы.

Как я думал, есть два возможных пути, которые способны реализовать в том числе процесс:

1). Создайте динамический тег в мнимой функции - include(), который я могу определить в своем прототипе (имитация класса в js).

Но ... Это почти так же, как стандарт, включая только динамическую логику, хранящуюся в прототипах, которая может динамически загружать некоторые необходимые модули веб-приложения.

И вот почему мне это не нравится, но это вариант, и я должен добавить это в список.

2). Динамическая загрузка js-файла через AJAX/WebSockets/SPDY, что вы хотели или даже hanlding части загруженных файлов с выполнением функции partion (требуется какая-то логика или реализация некоторых шаблонов проектирования) со следующим выполнением функции eval() и ее подготовкой в ​​новой заданной функция include(args); сделать сценарий Js выглядит следующим образом:

include("models.js"); 
include("dbController.js"); 
... 

Да ... Я знаю, что eval() есть зло в JavaScript мире, но я не знаю, имя другой функции, которая позволяет мне такой же функциональность.

Также ... Это может быть слишком медленно по сравнению с оригинальным способом включения, и я повторяю даже уязвимые.

Это два способа, которые я могу себе представить, возможно, вы предложите лучшее решение или убедите меня в некоторых плохих мыслях.

+1

require.js, возможно? – Barmar

+0

@ Barmar возможно :) спасибо за ссылку, я ее узнаю глубоко. –

+1

Возможно, инструменты Closure. Вы можете скомпилировать весь код, совместимый с закрытием, в один файл, но все же ленивые части загрузки кода, которые определяют поведение, которое вряд ли будет использовать пользователь. Многие библиотеки не совместимы с компилятором и не будут скомпилированы с вашим кодом. Вам нужны экстерны для этих библиотек. – HMR

ответ

0

Require.js - это инструмент для модуляции JavaScript, который делает именно то, что вы хотите. Вы определяете модули в своем собственном файле так:

define('moduleName', [ dependencies ], function() { 
    // module code 
}); 

И загружать их асинхронно:

require('moduleName'); 

Или, как зависимости других модулей:

define([ 'moduleName' ], function (myModule) { 
    // other module 
}); 

Он также имеет optimisation tool, который используется для компиляции ваших модулей в один файл JavaScript, готовый к выпуску.

+0

Замечательно!+1 Большое спасибо за новую информацию :) Очень полезно! –

Смежные вопросы