Require / Browserify толстовка с капюшоном в угловой
Моя цель - использовать фреймворк hood.ie в Angular. Вместо того, чтобы включать все файлы JS, я хотел бы использовать Browserify и require() зависимости. Я не могу найти способ требовать толстовку (шаблон приложения для hood.ie использует <script src="/_api/files/hoodie.js">
который предоставляется командой "балахон старт". Есть ли способ включить его с помощью require()?
Структура моего проекта:
.
+-- app
| +-- app.js
| +-- index.html
| +-- main
| | +-- index.js
| | +-- main.html
| +-- auth
| | +-- index.js
| | +-- login.html
+-- dist
| +-- main
| | +-- main.html
| +-- auth
| | +-- index.html
| +-- browsified.js
| +-- index.html
Каталог dist создается командой gulp:
var gulp = require('gulp')
var browserify = require('browserify')
var source = require('vinyl-source-stream')
var exec = require('child_process').exec
gulp.task('hoodie-start', ['copy-static', 'browserify'], function() {
var child = exec('node ./node_modules/hoodie-server/bin/start --www dist --custom-ports 6001,6002,6003');
child.stdout.on('data', function(data) {
console.log(data);
});
child.stderr.on('data', function(data) {
console.log(data);
});
return child;
});
gulp.task('browserify', function() {
var options = {
entries: ['./app/app.js'],
extensions: ['.js']
}
return browserify(options)
.bundle()
.pipe(source('browserified.js'))
.pipe(gulp.dest('./dist'));
});
gulp.task('copy-static', function() {
return gulp.src(['./app/**/*.html'])
.pipe(gulp.dest('./dist'));
});
Файл package.json (удален из несущественных частей):
{
...
"main": "dist/index.html",
"dependencies": {
"angular": "^1.4.8",
"angular-route": "^1.4.8",
"hoodie-plugin-angularjs": "^0.1.1",
"hoodie-plugin-appconfig": "^2.0.1",
"hoodie-plugin-email": "^1.0.0",
"hoodie-plugin-users": "^2.2.2",
"hoodie-server": "^4.0.2"
},
"bundleDependencies": [
"hoodie-plugin-angularjs",
"hoodie-plugin-appconfig",
"hoodie-plugin-email",
"hoodie-plugin-users",
"hoodie-server"
],
"devDependencies": {
"browserify": "^13.0.0",
"gulp": "^3.9.0",
"vinyl-source-stream": "^1.1.0"
},
"hoodie": {
"plugins": [
"hoodie-plugin-appconfig",
"hoodie-plugin-email",
"hoodie-plugin-users",
"hoodie-plugin-angularjs"
]
}
}
Наконец, app.js:
var angular = require('angular');
var ngRoute = require('angular-route');
var main = require('./main');
var auth = require('./auth');
var app = angular.module('myApp', ['ngRoute', 'hoodie', main.name, auth.name]);
app.config([
'$routeProvider', 'hoodieProvider', function($routeProvider, hoodieProvider) {
$routeProvider.when('/login', {
templateUrl: 'auth/login.html',
controller: 'LoginController'
});
$routeProvider.otherwise({
templateUrl: 'main/main.html',
controller: 'MainController'
});
hoodieProvider.url('http://myapp.com');
}
]);
Я планировал воспользоваться Hoodie-Plugin-Angularjs, но он не требует ()- в состоянии.
Любые намеки, как все это вместе?
1 ответ
Кажется, у вас есть 2 проблемы здесь. Во-первых, глядя на документацию, кажется, что вам требуется клиентская библиотека, которая предоставляет Hoodie
конструктор. Во-вторых, hoodie-plugin-angularjs
Библиотека ожидает глобальногоHoody
быть доступным. Попробуйте следующее:
// app.js
// Make global
var Hoodie = require('hoodie-client');
window.Hoodie = Hoodie;
// Now the plugin knows about Hoodie.
// It will run the side-effect,
// namely registering the angular service
require('hoodie-plugin-angularjs');
// ... Angular code that uses Hoodie