根据环境设置 angularjs 项目中的基本 URL

2024-01-02

我正在开发一个使用 Yeoman 创建的 AngularJs 项目。该项目使用 Grunt 作为任务管理器。

在我的 index.html 中,我需要设置基本 url:

<base href="/">

href属性值取决于环境:如果环境是开发我希望href简单/,如果环境是生产,那么价值必须是其他东西a/b/c.

这个问题有哪些可用的解决方案?

可以使用 AngualrJs 中的常量在运行时动态设置它,或者最好在构建/服务时静态设置它?


就我个人而言,我更喜欢将其设置为构建/服务时间,因此当我更改环境时我不需要更改代码。

所以,我可以在服务器上推送并使用grunt serve:production- 您不需要更改代码,因此您可以使用 git hooks 和 bash 脚本轻松地为您的代码提供服务。

要在 Grunt 中实现此目的,您可以使用恩古斯坦 https://github.com/werk85/grunt-ng-constant。你定义你想要的变量,它会创建一个名为 config.js (或任何你想要的)的文件,在下面公开你的变量ENV(或任何你想要的)使用.configure()

谈论你的案例,你的 Gruntfile 中可以有这样的内容:

ngconstant: {
  options: {
    space: ' ',
    wrap: '"use strict";\n {%= __ngModule %}',
    name: 'config'
  },
  vagrant: {
    options: {
      dest: 'app/scripts/config.js'
    },
    constants: {
      ENV: {
        name: 'vagrant',
        baseUrl: 'http://192.168.33.99/api/v0',
      }
    }
  },
  test: {
    options: {
      dest: 'app/scripts/config.js'
    },
    constants: {
      ENV: {
        name: 'test',
        baseUrl: 'http://test.example.com/api/v0',
      }
    }
  },
}

然后,在您的应用程序中,您可以使用以下命令获取 baseUrlENV.baseUrl并公开到您的 html 文件,如下所示(角度):

app.run(function($rootScope, ENV.baseUrl){   
    $rootScope.baseUrl = config.baseUrl;
});

(html)

<base ng-href="{{baseUrl}}">

因此您可以使用以下方式为您的应用程序提供服务grunt serve:vagrant当你使用 vagrant 或grunt serve:test当你想在测试服务器上运行时

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据环境设置 angularjs 项目中的基本 URL 的相关文章

  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • AngularJS - 设置下拉列表的选定值不起作用

    我在这里复制了我的问题 http jsfiddle net U3pVM 2840 http jsfiddle net U3pVM 2840 正如标题所示 我无法设置使用 ng options 填充的选择的选定值 我已经搜索并尝试了我找到的所

随机推荐

  • 虚函数的实现可以放在头文件中吗

    通常 如果我们将非虚拟成员函数的实现放入头文件中 该函数将被内联 如果我们将虚拟成员函数的实现放在头文件中怎么样 我想这与将其放入 cpp 文件中是一样的 因为内联和多态性不能一起工作 我的说法正确吗 将方法的实现放入头文件中并不会使其内联
  • 杜伦达尔 谷歌翻译

    如何在 Durundal Shell js shell html 中绑定 Google 翻译 html div div script function googleTranslateElementInit new google transl
  • Web 套接字与间隔轮询

    我目前正在寻找最合适的解决方案来处理通知 我当前的选择是使用 websockets 或仅进行轮询 每分钟仅 1 个请求 无长轮询 无永久轮询 我在寻找这些方法的性能指标时遇到了一些问题 结果应该能够并行处理大量用户 而不占用太多资源 选项A
  • SwiftUI CoreData 崩溃预览

    我有以下代码来绘制汽车列表 数据存储在 coredata 中 然而 当我添加从数据库获取数据的代码行时 swiftui 预览似乎中断了 错误日志显示以下内容 PotentialCrashError 测试 app app 可能已崩溃 里程应用
  • ActionBarSherlock 和 FragmentTabsPager

    正如很多人到目前为止所做的那样 我正在将 FragmentTabsPager 实现到我的应用程序中 该应用程序使用 ActionBarSherlock 4 0 然而 我迷路了 碎片 以及谷歌围绕它的所有小想法 计划和方法 都让我感到困惑 如
  • 将 JSON 转换为 C# 类型

    我想像这样使用 JS 中的未知对象 aa abcd 1 uio uio2 uio3 opee1 opee2 opee3 abcd 2 null abcd 3 null abcd 4 null 发送到 MVC 内容类型为 applicatio
  • 显示将用户带到该网站的 Google 关键字

    我希望显示类似的内容 您好 您是通过搜索 google 关键字 到达此网站的 我很确定我以前见过这样做 但我在弄清楚如何获取用于引导用户访问我的网站的关键字时遇到了麻烦 有人知道答案吗 您需要获取引用 URL 然后删除 q 查询字符串的所有
  • jquery 焦点无法在加载 ajax 的页面上工作

    My code 索引 php
  • 是什么导致 Visual Studio 无法正确加载程序集?

    我一直很高兴地编写一个规模相当大的解决方案 刚刚超过 13k LOC 5 个项目 该解决方案利用 Linq to Sql 进行数据访问 突然间 我执行了正常的构建 并收到了一条甜蜜的 甜蜜的模糊消息 错误 1 由于 C xxx xxx db
  • 如何在 Vim 中找出某个快捷键触发了哪个命令

    I try to execute a command in some plugin by pushing it s keyboard shortcut F2 But some other command is executed instea
  • RequireJS 和 Webapp Yo 生成器上出现“define”未定义错误

    我花了几天的时间来解决这个问题 但今天我终于需要你的帮助 我的仓库 https github com seoyoochan bitsnut web https github com seoyoochan bitsnut web 我想要实现什
  • 如何通过互操作公开 COM 库中定义的枚举作为 C# 函数的返回类型

    希望问题很清楚 但为了清楚起见 请补充一下 我有一个 VB6 dll 它定义了我在 C dll 中引用的枚举 C dll 使用 idispatch 接口以正确的方式定义 CCW 该接口声明返回类型为枚举的函数 运行 regasm 时 我收到
  • Python 3 字符串索引查找是 O(1)?

    短篇故事 Python 3 unicode 字符串查找是 O 1 还是 O n 很长的故事 C char 数组中字符的索引查找是常数时间 O 1 因为我们可以确定地跳转到连续的内存位置 const char mystring abcdef
  • “git checkout ”正在将分支更改为“无分支”

    我正在 git 的一个分支上工作 当我做 git checkout
  • constexpr 中的“整数常量溢出”警告

    我正在尝试找到一个与 constexpr 兼容的哈希函数 用于在编译时对字符串进行哈希处理 字符串的数量非常少 static constexpr unsigned int Fnv1aBasis 0x811C9DC5 static const
  • 使用密钥加密和解密的简单方法[重复]

    这个问题在这里已经有答案了 我正在寻找一种简单的方法来使用固定密钥 将存储在我的配置中 加密和解密一些数据并将结果存储为字符串 base16 或十六进制 就像是 string myString hello world string myKe
  • centos 6 中gfortran编译器的安装

    我尝试安装一些编译器 我的笔记本电脑使用的是 Centos 6 我已经安装了 gcc 即 GNU C 编译器 我还需要安装 gfortran 但是当我输入时yum install gfortran 我收到消息no package gfort
  • 无法让 XPath 单击 selenium 中的弹出窗口

    我正在尝试从 SEC 中提取一些简单的 CIK 代码 如果运行下面的代码 您将收到有关 调查 的弹出消息 如果您手动执行 您将看不到它 它轰炸了我的代码 但由于它是在硒中 我无法使用 chropath 检查它以使 xpath 单击 NO 我
  • 如何使用 Java3D API 在 java 中绘制简单的 3D 点(x,y,z)?

    我正在使用 Java 技术在 netbeans 平台上制作一个桌面应用程序 我做了一些图像处理 数据库功能 图像捕获过程 但现在我想在 3D 视图中绘制图像 所以 我想首先我必须制作 tiff 16 位灰度图像的点数组 然后使用这个点数组
  • 根据环境设置 angularjs 项目中的基本 URL

    我正在开发一个使用 Yeoman 创建的 AngularJs 项目 该项目使用 Grunt 作为任务管理器 在我的 index html 中 我需要设置基本 url href属性值取决于环境 如果环境是开发我希望href简单 如果环境是生产