我正在使用使用REST服务的AngularJS单页应用程序。前端应用程序是与后端分开开发的,因此在开发过程中,我们必须在AJAX调用的URL中对域名进行硬编码(我们启用了CORS)。但在生产的情况下,一切都在同一个域中运行,因此对域名进行硬编码看起来没有什么不好。有没有我们可以在开发过程中使用域名在url中进行ajax调用,并且在生产过程中不对域名进行硬编码?我正在使用gulp。在angularjs中使用不同的域进行开发和生产
0
A
回答
1
使用gulp-ng-constant与$http
的例子:
在gulpfile.js
以下任务将生成文件target/build/scripts/_config.js
与内容angular.module('globals', []).constant('apiContextPath', '...');
:
gulp.task('app.ngconstant', [], function() {
var ngConstant = require('gulp-ng-constant'),
var rename = require('gulp-rename');
return
ngConstant({
constants: {
apiContextPath: '.' // TODO Devise a way to set per environment; eg command line
},
name: 'globals',
stream: true
})
.pipe(rename('_config.js'))
.pipe(gulp.dest('target/build/scripts'));
});
显然,你需要在你的(包装/缩小的)代码生成的文件。
东西沿着下面的代码将$httpProvider
配置预先设置apiContextPath
到以'/api/'
开头的所有请求(即我们的REST端点):
angular.module(...).config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['globals', function(globals) {
return {
'request': function(config) {
if(config.url.indexOf('/api/') === 0) {
config.url = globals.apiContextPath + config.url;
}
return config;
}
};
}]);
}]);
(有相当多的其他配置选项,所以这只是我从事的一个较旧项目的一个例子。)
0
如果你还没有,你可以通过你的gulp构建一个参数来构建生产或开发模式。
根据该标志,你可以设置你的gulpfile一个baseUrl
属性,用于包括(使用gulp-insert
)到你的JavaScript建立之前,所有的角脚本的脚本:
'window.baseUrl = ' + baseUrl
然后你可以有在应用程序中的常数,你的服务使用来获得baseUrl
:
angular.module('YourModule').constant('baseUrl', window.baseUrl);
相关问题
- 1. 如何使用不同的@Injectable进行开发和生产
- 2. 在Carrierwave使用不同的S3存储桶进行生产和开发
- 3. 在生产和开发环境中使用不同的陈述
- 4. 配置Rails在开发和生产中使用不同的js
- 5. 在开发和生产环境中使用不同的Web.config
- 6. 设置git进行开发和生产
- 7. 不同的网站开发和生产
- 8. Rails:在开发和生产上的不同行为
- 9. Yaml :: load_file在开发和生产之间的行为不同(Rails)
- 10. Rails在开发和生产中的路由有所不同
- 11. 快速关闭和打开CustomErrors进行生产和开发
- 12. 在开发中使用Ruby 1.9.2和在生产中使用REE
- 13. 在生产和开发中设计使用不同的电子邮件模板
- 14. webpack - 如何在生产和开发环境中使用不同的变量
- 15. 使用不同的资产.properties进行调试和发布
- 16. 使用不同的资产进行调试和发布
- 17. 在生产和开发中的Laravel域路由
- 18. Rails:Css在开发和生产中似乎有所不同
- 19. 开发与生产的不同路径
- 20. 开发和生产
- 21. CodeIgniter生产和开发服务器在同一个域上。 (无子域)
- 22. 使用npm和grunt进行开发和生产的Javascript项目结构
- 23. 在WAMP中的生产和开发
- 24. 在开发和生产环境之间进行Dinstinguish
- 25. Laravel用于生产和开发的不同config/database.php
- 26. 用于开发和生产的不同种子
- 27. Cordova Firebase:使用键开发和生产
- 28. 如何使用单个服务器进行开发,生产和QA使用svn
- 29. 使用相同的Facebook apikey for heroku生产和本地开发
- 30. 的Rails:开发和生产
我已经在好几次使用过[gulp-ng-constant](https://github.com/guzart/gulp-ng-constant)了。然后,我实现了一个'$ http' [拦截器](https://docs.angularjs.org/api/ng/service/$http#interceptors),它预先设置了“API URL”(用gulp-ng-constant配置)到HTTP呼叫。 –
这听起来对我来说是个好主意。我会尝试的。 – VJAI
如果您张贴作为答案我可以upvote或接受为答案。 – VJAI