一个纯净的webpack4+angular5脚手架
该篇主要是结合刚发布不久的webpack4,搭建一个非cli的angular5的脚手架demo,主要分为以下几个方面阐述下脚手架结构:
# 脚手架基础架构(根据angular5的新规范)
/**
* 脚手架结构
*
*/
—— src
|—— app
—— about
—— index
|—— app-rouing.module.ts
|—— app.component.css
|—— app.component.html
|—— app.component.ts
|—— app.module.ts
|—— index.html
|—— main.ts
|—— polyfills.ts
|—— styles.css
|—— tsconfig.json
|—— vendor_ng.ts
—— package.json
—— webpack.dev.js
—— webpack.pro.js
该脚手架的模块划分遵循angular-cli规范,业务代码统一放在了根目录src下,about和index是两个脚手架的demo模块,该目录下包含该模块的视图、控制器以及模块路由配置等文件。
app-routing.module.ts:项目的根路由模块
app.component.html:应用引导启动视图
app.module.ts: 应用根模块
index.html:应用加载页
main.ts:angular入口文件
polyfills.ts:汇总一些兼容库文件
tsconfig.ts:typescript的配置文件
vendor_ng.ts:第三方资源文件汇总
另外,在开发环境中引入了一个可视化的打包插件webpack-bundle-analyzer,用于在浏览器界面查看最终的bundlejs所包含的所有资源结构,效果如下图所示,可以清晰的监控打包的资源,以防引入冗余文件。配置语法可参见webpack.dev.js文件。

# 遇到的问题:
1、如果是ng5+的话,由于删除了相对路径的指南模块,所以可能会出现以下报错:zone.js:665 Unhandled Promise rejection: Failed to load app.component.html ; Zone: <root> ; Task: Promise.then ; Value: Failed to load app.component.html

解决方案及why可参考以下资料,这里就不详述
* relative-template-and-style-urls-using-system-js-without-moduleid-in-angular-2-4-9
* component-relative-paths-in-angular
* angular变更日志angular change-log
脚手架中暂且用的是webpack的引入方式来解决该问题,当感觉有点怪怪的,期待交流!
# 待优化
提升部分还有无感知刷新功能,以实现提升开发环境效率,但该功能还未加到脚手架里,打算用官方推荐的webpack-hot-middleware + webpack-dev-middleware双剑插件实现实时热替换功能,有更好方式的朋友可以交流下。
脚手架github地址:angular-scaffold demo
一个纯净的webpack4+angular5脚手架的更多相关文章
- 【webpack系列】从零搭建 webpack4+react 脚手架(四)
经过三个章节的学习,你已经学会搭建了一个基于webpack4的react脚手架.如果要更改配置,比如,你希望把编译后的js文件和css文件等单独放dist下的static目录下,你想想,是不是有点麻烦 ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(三)
本章节,我们对如何在脚手架中引入CSS,如何压缩CSS,如何使用CSS Modules,如何使用less,如何使用postcss等问题进行展开学习. 1 支持css (1)在app目录,新建一个css ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(一)
搭建一个React工程的方式有很多,官方也有自己的脚手架,如果你和我一样,喜欢刨根究底,从零开始自己一行一行代码创建一个React脚手架项目,那你就来对地方了.本教程是针对React新手,以及对web ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(二)
html文件如何也同步到dist目录?bundle.js文件修改了,万一被浏览器缓存了怎么办?如何为导出的文件加md5?如何把js引用自动添加到html?非业务代码和业务代码如何分开打包?如何搭建开发 ...
- 如何用vue-cli3脚手架搭建一个基于ts的基础脚手架
目录 准备工作 搭建项目 vue 中 ts 语法 项目代理及 webpack 性能优化 其他 忙里偷闲,整理了一下关于如何借助 vue-cli3 搭建 ts + 装饰器 的脚手架,并如何自定义 web ...
- 【AMAD】cookiecutter-django -- 是一个构建Django项目的脚手架工具
动机 简介 个人评分 动机 Django内置的命令django-admin startproject其实并不好用,在你上线之前八成已经把它改的面目全非了. 简介 cookiecutter-django ...
- 【转】Jsduck一个纯净的前端文档生成神器
让前端程序更具可维护性,是一个老生常谈的问题,大多数时候我们都关注于应用层面的代码可维护性,如:OO.模块化.MVC,编码规范.可扩展和复用性,但这都是属于设计层面需要考虑的事情,可维护性还应包含另一 ...
- 【webpack系列】从零搭建 webpack4+react 脚手架(五)
本章节,我们一起来探讨以下问题:如何对编译后的文件进行gzip压缩,如何让开发环境的控制台输出更加高逼格,如何更好的对编译后的文件进行bundle分析等. 1 gzip压缩 如果你想节省带宽提高网站速 ...
- 快速新建一个纯净的java pom项目 project
前期的java环境安装就不再阐述了使用步骤java -jar project-creator-0.1.jar projectName [war] 1> 比如你要创建一个项目名字叫 smile-o ...
随机推荐
- Vue项目使用AES做加密
1.先在vue项目中安装crypto-js 2.在项目中新建一个utils.js文件 3.utils.js文件中的内容 /** * 工具类 */ import Vue from 'vue' impor ...
- Javascript--普通函数调用-涨工资计算函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- head first java读书笔记
head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍J ...
- keras load model 遇到 自定义函数 Lambda(lambda x: softmax(x, axis=1), NameError: global name 'softmax' is not defined
问题 在定义模型的时候,自定义了一个函数 模型保存之后,load 模型的时候报错: 解决 load 模型的时候需要指定custom object 参考: https://faroit.github.i ...
- 3/5/2014 cfb 小心
During each move the player can choose all lines of the matrix where dwarf is not on the cell with c ...
- Python: 合并多个字典
现在有多个字典或者映射,想将它们从逻辑上合并为一个单一的映射后执行某些操作,比如查找值或者检查某些键是否存在. eg1: a = {'x': 1, 'z': 3 }b = {'y': 2, 'z': ...
- Java Callable接口——有返回值的线程
实际开发过程中,我们常常需要等待一批线程都返回结果后,才能继续执行.<线程等待——CountDownLatch使用>中我们介绍了CountDownLatch的使用,通过使用CountDow ...
- java接口对接——别人调用我们接口获取数据
java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- Filter过滤器与Session会话跟踪技术
Filter过滤器 适用场景 1.为web应用程序的新功能建立模型(可被添加到web应用程序中或者从web应用程序中删除而不需要重写基层应用程序代码)2.用户授权Filter:负责检查用户请求,根据请 ...
- 推荐:Java性能优化系列集锦
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...