小编ste*_*ers的帖子

分布式软件体系结构中的捆绑优化

我们有一个架构,其中一个大型应用程序被拆分为多个Angular应用程序,由不同的团队维护,具有不同的部署时间表 ASP.NET上下文中的这些单独的Angular应用程序部署在服务器上,并作为一个大型应用程序运行.每个应用程序都部署在一个单独的应用程序池中,它们都具有相同的布局和框架代码.

每个应用程序都将使用通过使用AOT编译器和模块捆绑器(汇总或webpack 2)优化的捆绑包.每个应用程序还将使用集中式Javascript代码,这些代码需要集中在大型应用程序(框架代码)中.此代码还将使用Angular组件并包含诸如集中布局组件,多个角度服务以及Web api调用等内容......因此每个应用程序都将使用相同的框架代码.

目标还在于,当框架代码发生更改时,任何单个应用程序都不必再次更新和部署.

我看到的标准方法是使用es2015导入,模块捆绑器解释导入,只将必要的代码添加到模块中(树摇动).大多数情况下,您需要的Angular框架内容也包含在捆绑包中(不使用CDN).但在这种情况下,有3个方提供代码:

  • Angular和其他供应商代码
  • 所有应用程序使用的集中式定制框架代码也使用Angular并提供捆绑包
  • 应用程序本身提供一个捆绑

您将如何分割和优化捆绑包?

  • 与集中框架代码和应用程​​序需要使用的所有Angular /供应商内容单独捆绑Angular内容将从主捆绑中排除
    • 使用类似CDN的方式集中自定义框架内容并引用该包(在包中没有角度代码)
    • 所以你最终得到这样的东西:

<script src="vendor-bundle.js"></script>
<script src="/central-location/frameworking-bundle.js"></script>
<script src="app-bundle.js">/script>;

在这种特定情况下,最好的方法是什么?我找不到这种架构设置的好例子.

asp.net webpack rollupjs webpack-2 angular

9
推荐指数
1
解决办法
160
查看次数

间接引用远程Javascript URL

我们想使用Rollup with Angular 4/Typescript和NPM我们公司内部有以下要求:

  • 某些团队创建需要集中的JS库(如CDN)
  • 这些库位于远程URL后面,不应该在应用程序中本地存在(原因是这些库经常更改)
  • 库(应用程序)的使用者安装npm包以使用该库
  • 本地安装的npm包中包含一个Javascript Facade文件或bundle,它将远程链接放在远程URL后面的JS库中
  • npm包还包含一个Typescript定义文件
  • 目标是消费者不需要添加带有URL的脚本标记(他不应该知道这一点)
  • 本地安装的Javascript文件可以与应用程序代码捆绑在一起
  • 如果可能,新版本的库将向后兼容

使用Typescript/Javascript/NPM/Rollup实现此目的的最佳方法是什么?我们将使用ES2015语法转换为commonJS语法.

commonjs npm typescript ecmascript-6 rollupjs

7
推荐指数
1
解决办法
372
查看次数

Angular Ivy编译器和Webpack

我们想将新的Angular 8 Ivy编译器与webpack一起使用。我们不使用Angular CLI。这可能吗?如何才能做到这一点?我似乎找不到有关此要求的信息。

webpack angular angular-builder angular-ivy

6
推荐指数
1
解决办法
614
查看次数

ASP.NET核心中的Angular CLI,具有热模块替换功能

我们希望在ASP.NET核心中为我们的项目使用Angular CLI.作为输出,我们选择wwwroot而不是dist.默认ng服务可自动更换热模块.但是现在我们需要使用kestrel和iis集成来替换热模块.我们决定不使用AspNet核心Javascriptservices,因为我们希望使用Angular CLI作为默认值.

有谁知道如何使用Angular CLI替换热模块替换和使用wwwroot中的静态文件的ASP.NET核心标准hostring?

asp.net-core angular-cli asp.net-core-mvc-2.0

5
推荐指数
1
解决办法
508
查看次数

延迟RxjsBehaviorSubject机制

我有以下要求。

我有一个带有BehaviorSubject 的Angular 服务。http 请求完成后,将使用该值调用BehaviorSubject.next 方法。该值在单页的生命周期中可能会发生变化。

不同的订阅者会注册到它,并在发生变化时被调用。

问题是,当 http 请求挂起时,BehaviorSubject 已经包含默认值,并且订阅者已经立即获取该值。

我想要的是订阅者必须等到 http 请求完成(延迟)并在 http 请求完成并设置值时获取值。所以我需要的是某种延迟行为主体机制。

我如何使用 rxjs 来实现这个?

另一个要求是,如果我在方法中订阅行为主体,我们希望订阅者获得第一个非默认值并且订阅结束。我们不希望重新执行函数中的本地订阅。

rxjs rxjs5

5
推荐指数
1
解决办法
1857
查看次数

webpack合并definePlugin process.env.NODE_ENV undefined

我正在将 webpack-merge 与不同的 webpack.config 文件一起使用。我正在尝试传递 node_env (或任何其他变量);

如何从 webpack.common.js 文件访问进程环境变量?

这是 webpack.prd.config.js 文件:

const merge = require("webpack-merge");
const common = require("./webpack.common.js");
const webpack = require("webpack");

module.exports = merge(common, {
    plugins: [
        new webpack.DefinePlugin({
            "process.env": {
                "NODE_ENV": JSON.stringify("production")
            }
        })
    ]
});
Run Code Online (Sandbox Code Playgroud)

这是 webpack.common.js 文件:

console.log("Environment: " + process.env.NODE_ENV);

module.exports = {
    entry: {
    ...
Run Code Online (Sandbox Code Playgroud)

'process.env.NODE_ENV' 变量始终未定义。

webpack

2
推荐指数
1
解决办法
2011
查看次数

ASP.NET 核心中的日志控制器动作持续时间

对于一项要求,我们需要记录 aspnet 核心操作请求的持续时间。在请求结束时,必须记录持续时间(秒表),我们还需要知道使用了哪个控制器和哪个动作方法。

最好的地方是什么?动作过滤器,中间件?如何?

asp.net-core

2
推荐指数
1
解决办法
1764
查看次数

使用索引数据库在现有数据库中动态创建对象存储

我正在使用 idb 执行索引数据库操作。我们正在实施一个缓存系统。我需要动态创建对象存储。如何在不知道版本的情况下在现有数据库中添加对象存储?因为显然只有在版本增加的情况下才能在升级回调中创建对象存储。因此,我们事先并不知道将创建多少个对象存储。

indexeddb

2
推荐指数
1
解决办法
1017
查看次数

获取模块类名和组件类名

我们想要测量以下 Angular 事件,并且我们知道如何做到这一点:

  • 组件和指令的 ngAfterViewInit (通过生命周期钩子)
  • 路由导航计时(通过路由器事件)
  • 通过common/http的http客户端进行http调用(通过拦截器)

但我们想记录额外的信息:

  • 与路由关联的模块类名称和路由组件类名称
  • 注册给定组件的模块类名称
  • 进行 http 调用的服务或组件以及关联的模块

我们怎样才能得到这些额外的信息呢?

angular angular5

1
推荐指数
1
解决办法
3256
查看次数