Можно ли использовать ng-include без веб-сервера?
Я запускаю приложение AngularJS, которое просто включает файл
<div ng-include src="'sample.html'"></div>
Это работает при запуске под веб-сервером. Но если веб-приложение запускается из двойного щелчка из файлового обозревателя (т.е. Не с веб-сервера), он не включает файл
Работает ли ng-include вне веб-сервера? Я проверил статус сети в Chrome, он говорит ОПЦИИ в методе и Отменить отмену по статусу
Ответы
Ответ 1
Один способ решения заключается в построении шаблонов:
<script type="text/ng-template" id="sample.html">
<div>This is my sample template</div>
</script>
Fiddle.
Это помещает ваш шаблон в кеш шаблона Angular. Когда обрабатывается директива ng-include, Angular сначала проверяет кеш.
Ответ 2
Проблема связана с протоколом file://
. В основном все браузеры запрещают XHR-запросы, когда файл отправлен с file://
. Вот почему запросы AJAX терпят неудачу. И ng-include
использовать их для загрузки файлов.
Вы можете запустить Chrome с параметром --allow-file-access-from-files
, чтобы отключить проверки для file://
.
FireFox должен загружать файлы, если они находятся в одной папке (проверьте этот для получения дополнительной информации).
Но лично предпочитаем запускать простейший NodeJS script для обслуживания файлов, которые можно найти в проекте angular-seed. Он требует всего node
двоичного кода и создает ощущение обычного веб-сервера.
Ответ 3
У меня была аналогичная проблема, и я решил ее, запустив простой сервер nodejs для обслуживания статических файлов - http-server. Убедитесь, что у вас установлен nodejs, затем:
Установка:
$ sudo npm install http-server -g
Затем из каталога проекта:
$ http-server
Теперь вы можете получить доступ к своим файлам:
localhost:8080/whatever-file-you-have-in-your-directory.html
Ответ 4
Вы можете использовать Grunt вместе с grunt-html plug, чтобы предварительно скомпоновать ваши шаблоны вместе с вашим кодом Angular.
Ответ 5
Использование виртуального хоста на вашем xampp является лучшим решением и дает настраиваемое имя, например yourProject.dev
обновить httpd-vhosts файл в C:\xampp\apache\conf\extra\httpd-vhosts
<VirtualHost *:80>
ServerName yourProject.dev
ServerAlias www.yourProject.dev yourProject.com www.yourProject.com
DocumentRoot "C:\Users\customFolder/yourProject"
<Directory "C:\Users\customFolder/yourProject">
DirectoryIndex index.html index.php
ServerSignature Off
Options Indexes FollowSymLinks IncludesNoExec
AllowOverride All
Allow from all
Require all granted
</Directory>
</VirtualHost>
затем обновите файл хостов до 127.0.0.1 yourProject.dev
в Windows: c:\Windows\System32\Drivers\etc\hosts
в Mac: /private/etc/hosts
не забудьте оставить свой xampp/wampp