如何在网站中为JS变量赋值,取决于它是否's正在本地运行或正在生产中
How to assign a value to a a JS variable in a web site depending if it's running locally or in production?
我在笔记本电脑上进行web项目。当我完成后,我会上传我的文件到生产。每次上传到生产版时,我都必须确保将javascript代码中的各种URL更改为生产版URL。例如:
var ping_url = 'http://10.10.128.233' // locally
//var ping_url = 'http://ping.service.com' // in production
我在代码的不同部分有3个类似的url。我经常忘记在上传到制作之前更改它们,结果我破坏了制作网站。
有没有办法检查我是在笔记本电脑上还是在生产中运行网站?
我想写:
if (local) {
var ping_url = 'http://10.10.128.233' // locally
}
else {
var ping_url = 'http://ping.service.com' // in production
}
有什么想法吗?
您可以随时检查location.hostname
并将其与'localhost'
或您在笔记本电脑上使用的任何主机名进行比较。例如
var ping_url = ~location.hostname.indexOf('localhost')
? 'http://10.10.128.233' : 'http://ping.service.com'
理想情况下,您有一个部署系统,它可以准备和部署您的应用程序,并在此过程中处理环境差异。例如,我偏爱Capistrano。为了部署我的项目,我在命令行上键入cap deploy
,它运行构建/打包/配置脚本,将站点上传到服务器,然后在那里运行迁移后脚本。您可以在此过程中部署不同的配置文件,或者在此过程中对Javascript文件进行后处理。有很多不同的方法可以让这种改变坚持下去,所有这些方法都适用于不同的目的。
如果你有任何类型的服务器端语言,你可能想使用以下任何一种:
<?php if (...) : ?>
var ping_url = '...';
<? else : ?>
var ping_url = '...';
<?php endif; ?>
或
var ping_url = <?php echo json_encode($config['pingUrl']); ?>;
环境变量在这里可能非常有用;也就是说,在Apache配置或.htaccess文件中,你有这样的东西:
SetEnv MYAPP_ENVIRONMENT production
在你的应用程序中,你可以按照以下方式进行操作:
$environment = getenv('MYAPP_ENVIRONMENT') ?: 'development';
然后你进一步决定你的环境是什么。
您必须找出服务器端处理、环境变量和部署时间处理的哪种组合最适合您。
相关文章:
- Angularjs代码未在匿名函数中运行
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 我的HTML按钮没有在Javascript中运行
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在JSP中运行pdftk
- jQuery自动完成在Firefox中运行良好,但在Chrome中则不然
- 在Debian中运行包含load()和print()函数的JS脚本
- javascript没有在aptana3工作室中运行
- 如何让BiwaScheme在JSFiddle中运行
- 如何在angularJS中运行for循环而不使用html标记
- 在其他javascript框架模板中运行angular指令
- 在Android WebView中运行Javascript-onPageFinished循环
- 在父网页的iframe中运行JavaScript
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- Jquery在生产和Heroku中不起作用,但在开发中运行良好
- jQuery成功处理程序未在生产服务器上执行,但在dev中运行良好
- 运行帆.js在生产中具有最低权限
- 在生产中部署时运行“bower install”是一种不好的做法
- 禁用Grunt任务仅在生产环境中运行
- 什么是最生产级别的Haskell到JavaScript编译器,编写在浏览器中运行的代码