我想引用在此状态函数之外定义的“常量”,但如果我尝试将其作为提供程序传递,则会出错,因为常量不是提供程序。也就是说,我想做类似的事情:
var exports = module.exports = function ($stateProvider,configData) { ...
但那失败了。如何将我的javascript变量baseDirectory传入。
更大的问题是webroot并不总是在同一个url。有时它是/ ng,有时它只是/我希望能够将其设置为某个地方,我可以将其加载到配置文件中(而不是硬编码到状态函数中。
var exports = module.exports = function ($stateProvider) {
$stateProvider.state('home', {
url: baseDirectory + '/home',
templateUrl: '/templates/home/home.html',
controller: 'HomeController',
});
};
exports.$inject = ['$stateProvider'];
答案 0 :(得分:0)
我遇到了同样的问题,我做的是在应用程序中构建一个常量,并在基本URL更改时用gulp任务中的新值替换它们。
它有很多应用程序,所以我的想法很愚蠢,只需通过gulp任务配置输入的新值来查找并替换应用程序中内容的值。
这不聪明,但有效。
在示例中,我在/ clinic,/ panel,/ company中有三个应用程序,并且对于每个应用程序,它都有一个build.js。
build.js将构建应用程序,并替换常量值。
我有很多应用,所以我这样做:
var gulp = require('gulp');
var concat = require('gulp-concat');
var taskBuildClinic = require("./clinic/build");
var taskBuildPanel = require("./panel/build");
var taskBuildCompany = require("./company/build");
var migrate = require("./laravel/migrate");
var env = {
'dev': {
EndpointBaseUrl: "'/admin/public/';",
TemplateBaseUrl: "'/admin/public';"
}
};
// ./node_modules/.bin/gulp
gulp.task('clinic', function (cb) {
return taskBuildClinic(gulp, env);
});
gulp.task('company', function (cb) {
return taskBuildCompany(gulp, env);
});
gulp.task('panel', function (cb) {
return taskBuildPanel(gulp, env);
});
在位于不同应用中的每个build.js中,它都有:
var concat = require('gulp-concat');
var replace = require('gulp-replace');
...
if (env['production']) {
// replace something not for production
endpoint = "var EndpointBaseUrl = " + env['production']['EndpointBaseUrl'];
templateBaseUrl = "var TemplateBaseUrl = " + env['production']['TemplateBaseUrl'];
console.log(endpoint);
console.log(templateBaseUrl);
} else {
endpoint = "var EndpointBaseUrl = " + env['dev']['EndpointBaseUrl'];
templateBaseUrl = "var TemplateBaseUrl = " + env['dev']['TemplateBaseUrl'];
console.log(endpoint);
}
return gulp.src(files)
.pipe(concat(prefix + '.js'))
.pipe(replace(/var EndpointBaseUrl.*?;/g, endpoint))
.pipe(replace(/var TemplateBaseUrl.*?;/g, templateBaseUrl))
.pipe(gulp.dest('./build'));
在应用程序中,我有:
var TemplateBaseUrl = "";
var EndpointBaseUrl = "";
他们的内容将被gulp任务中的值替换。