angular - 为 Angular 应用程序构建流程逻辑

标签 angular build

我已经用 Angular 进行开发有一段时间了,我想知道什么是一个好的构建过程以及如何实现它?

目前我的项目结构如下

app
  compontents
    component-one
      component-one.ts
      component-one.html
      component-one.scss
  services
  typings
  pages
    page-one
      page-one.ts
      page-one.html
      page-one.scss
  app.ts (contains bootstrap)
build
index.html

我看到很多人使用 src 文件夹而不是 app,并且有 dist 文件夹用于我认为是应用程序的构建,因此我想知道我的下一步是什么来实现这一点,当我将所有文件(如 .ts.scss 编译为 .js 时) .css 分别以一种很好的方式(目前我正在使用 gulp 将它们编译到 index.htlm 访问的构建文件夹中)和 .ts 文件被转换为同一文件夹中的 .js 文件,因此我在同一位置同时拥有 .ts.js 文件,我不确定将这些移动到哪里。

此外,当我查看控制台时,我看到消息说 Angular 处于开发人员模式,所以我认为存在生产模式?如何利用这一点。

一般来说,我想要两个文件夹 srcdist,其中需要运行和编译的所有内容都放入 dist 中,因此本质上有一个那里的应用程序可以部署到生产服务器。

作为旁注:我目前正在将所有 sass 文件编译成一个大文件,其中样式应用于 id 或类等。我知道在 Angular 中有一个 styles 选项可以添加到 @Component 中,类似于 template,我使用 templateUrl 来代替目标相关的 html 类,我可以做些什么吗与 scss 文件类似,或者最好保留它,因为它不是 css?

最佳答案

我认为你应该放弃 npm scriptwebpack 的 gulp。不要误会我的意思,Gulp 是一个很棒的工具,但是对于比简单网站更复杂的项目,处理 js/css 的所有构建步骤、设置 live-realod/browsersync(取决于多个插件)确实很痛苦,更不用说生产任务和测试了。

Webpack 好多了,它可以为您处理捆绑、源映射、转译、开发服务器、实时重新加载,速度极快,并且具有 amazing documentation 。如果您希望将组件的样式和模板放在单独的文件中,webpack 也会处理这个问题!

template.html

<h1>Hello world!</h1>

style.scss

$world: "World";

.someClass {
  &::after {
    content: "Hello " + $world;
  }
}

组件.ts

@Component({
  template: require('./template.html'),
  styles: [ require("!css!sass!./style.scss"); ]
})

作为捆绑结果,您将获得::

// bundle.js
@Component({
  template: '<h1>Hello world!</h1>',
  styles: [ '.someClass::after { content: "Hello World"; }' ]
})

Npm 脚本允许您轻松运行本地安装的 npm 模块,例如 rimraf、karma 或 webpack。它基本上完成了 gulp 的工作,并且是内置于 Node 中的!


最近我创建了my own little project with webpack您可能会发现这很有用。

这里列出了一些令人惊叹的存储库和文章:


关于the production mode ,这基本上意味着 Angular 的变化检测不会运行两次。您可以通过以下方式打开它:

import {enableProdMode} from 'angular2/core';

enableProdMode();

关于angular - 为 Angular 应用程序构建流程逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861715/

相关文章:

angular - Angular 中的 Google 表格 API

javascript - Angular 2 - 如何使用本地 json 中的数据?

javascript - 在表单中填充 JSON 数据以用于 Angular 8 CRUD 中的编辑目的

c++ - C++ 项目的 cmake vs waf

unit-testing - 在 Visual Studio 中进行单元测试时会重建不必要的项目

java - Grails - 项目构建系统

angular - 我怎样才能拥有 Angular2 组件的动态 templateUrl?

node.js - 如何使用 "content type": "application/x-www-form-urlencoded"? 发出 Post 请求

java - intellij 构建包含 gradle 依赖项的 jar 工件

linux - 没有足够的内存来构建 phantom.js - 怎么办?