javascript - Angular2全局配置文件

标签 javascript angular

我有一个具有以下结构的 Angular2 项目:

client/ // Angular2 client
    app/
        app.component.ts
        ...
    main.ts
    ...
server/ // API
    server.js
config/ // config files
    webpack.config.js
    ...

我希望将 Angular2 应用程序的所有常量和参数(例如 API 的 url...)以及所有其他配置文件放在配置目录中。 我如何在 Angular2 中执行它?由于 config 文件夹位于客户端文件夹之外,因此导入外部文件(包含许多“../../../”)是一个好习惯吗?

我也想使用依赖注入(inject),但是有什么不那么重的吗? 如何避免在我想要使用的每个组件/模块中手动导入文件?

谢谢

最佳答案

我使用的可能不是最好的方法,但是,我使用 webpack 通过 DefinePlugin 插件注入(inject)全局变量:

我在根目录上使用 .env 文件来存储变量,我有一个 .env.TST、.env.PRD 并将其替换为部署脚本

webpack.common.js

var preEnv = require('../.env');
var envVars = {};
for(var propertyName in preEnv) {
  envVars[propertyName] = '"'+preEnv[propertyName]+'"';
}

...

plugins: [
new webpack.DefinePlugin(
       envVars 
    )
]

...

示例.env文件

module.exports = {
    "APIURL": "https://localhost/MyAPI/",
    "PUBLIC_URL": "https://localhost:3000/",
    "BASE_PATH": "/"
    "ENV": "dev"
}

并且您将拥有 APIURL 作为全局变量

此外,我在打字中添加了一个文件,以防止出现警告:

typings/typings.d.ts

declare var APIURL: string;
declare var PUBLIC_URL: string;
declare var ENV: string;
declare var BASE_PATH: string;

希望对某人有帮助

关于javascript - Angular2全局配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39776591/

相关文章:

javascript - 如何在 HTML 中创建第二个视口(viewport)?

javascript - 从 jQuery(document).ready 调用时 focus() 不会触发 focus 事件

javascript - 如何绘制美国、加拿大、墨西哥和波多黎各的D3 map

angular - 根据 Angular 6 中的变量更改更改 html5 类?

Angular 2 中带有 header 和参数的 HTTP GET 请求

angular - HMR因Angular 9 + IVY : Type AppComponent is part of the declarations of 2 modules: AppModule and AppModule而失败

java - 使用 war 将 spring-boot 和 angular 7 应用程序部署到 tomcat 8.5 中

javascript - 在 NgRx 应用程序中对对象使用 Array.reduce 函数

javascript - Node/快速路由匹配的正则表达式 :/api/**/1. 2345

javascript - 指令中选择输入的两种方式绑定(bind)不起作用