jQuery в CodeIgniter, в представлении или во внешнем js файле?

Я разрабатываю использование веб-приложения CodeIgniter. Все это время я поместил пользовательский код js, чтобы сделать необычные материалы в файле представления. Путем выполнения этого я могу использовать site_url() и base_url() функция обеспечивается CodeIgniter.

Сегодня я хочу разделить весь пользовательский код js из файла представления во внешний js файл. Тогда это поразило меня, я не могу использовать site_url() и base_url() во внешнем js файле. Так, я должен был положить обратно код js в файл представления.

Я хочу спросить мнение, пример и лучшую практику для этого вида проблем. Вы помещаете пользовательский код js в представлении, или во внешнем js файле? Если Вы помещаете его во внешний файл, как Вы обходите потребности в site_url() и base_url() (около, конечно, помещенного абсолютный URL, которого я хочу избежать).

9
задан Donny Kurnia 25 February 2010 в 04:59
поделиться

3 ответа

Обычно я храню свой файл во внешнем файле, но помещаю в шаблон (представление) одну строку, в которой объявляется переменная javascript под названием "baseurl", которая позже может использоваться моим внешним javascript.

<script type="text/javascript">
  var baseurl = "<?php print base_url(); ?>";
</script>
<script type="text/javascript" src="/js/scripts.js"></script>

Теперь мой файл scripts.js имеет доступ к значению base_url () через собственную переменную baseurl .

38
ответ дан 4 December 2019 в 06:16
поделиться

Донни, если вы начнете передавать каждый URL отдельно, вы просто создадите себе проблемы. Почему бы просто не передавать через base_url() и не конкатенировать контроллер/метод в конце?

Вы теряете возможность менять местами параметры index_page и url_suffix, но они все равно не должны меняться так часто.

0
ответ дан 4 December 2019 в 06:16
поделиться

Я бы сделал это по-другому - js должен быть внешним, очевидно, но почему бы не использовать все преимущества того, что у вас есть MVC-фреймворк, который идеально подходит для обработки всей вашей javascript-магии?

Вот мой рецепт для Javscript (и CSS) с CI:

  1. Возьмите копию Minify - если вы еще не знаете этого, ваша жизнь станет лучше. Не в смысле "Любовь с первого взгляда / я только что открыл для себя jQuery / xkcd / unit testing", но хотя бы в смысле "Чувак, подготовленные операторы искореняют SQL-инъекции".

  2. Во-вторых, создайте CI-контроллер, который инкапсулирует Minify (это несложно, просто не забудьте установить правильный HTTP-заголовок и передать параметры)

  3. По желанию активируйте кэширование, чтобы все работало молниеносно (Minify имеет встроенное кэширование, но если вы уже кэшируете содержимое вашего CI, вы можете использовать тот же метод здесь.

  4. Опционально определите некоторые группы для Minify, чтобы сделать загрузку скриптов еще более приятной

  5. Опционально добавьте переменные baseurl и siteurl (и любые другие значения, которые вам могут понадобиться) к выводу javascript

  6. И вот, вы уже можете загружать свои скрипты, вызывая Minify-wrapper:

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


О, и если вы хотите быть особенно любезными с посетителями, подглядывающими за исходным кодом, вы можете автоматически добавить что-то вроде этого в вывод:

// Javascript compressed using Minify by Ryan Grove and Steve Clay
// (http://code.google.com/p/minify/)
// Human-readable source files:

// http://www.yourdomain.com/js/core_functions.js
// http://www.yourdomain.com/js/interface.js
// http://www.yourdomain.com/js/newsticker.js
// http://www.yourdomain.com/js/more_magic.js

(...)

По крайней мере, я так и делаю.

3
ответ дан 4 December 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: