zoukankan      html  css  js  c++  java
  • 前端架构之构建流

    在一个前端应用中,构建系统需要做下面一些事情:

    • 依赖管理及安装
    • 优化开发环境
    • 代码质量检测
    • 编译及打包
    • 测试及部署

    对于一个前端应用来说,通常需要做一些步骤:

    1. 包管理 npm bower yarn
    2. 持续集成
    3. 构建系统 Gulp NPM Grunt
    4. 构建流(Tasks) watch -> build  compress serve sprint refreshing minify webpack
    5. 代码质量(Lint) 测试 单元测试 -> 服务测试 -> UI测试
    6. 源码(code) SASS/LESS -> CSS  JavaScript方言 -> Js 模板引擎 -> HTML
    7. 浏览器

    一、依赖管理工具

      1)不同的模块化方案

      • AMD  require.js  Bower
      • CommonJS  Node.js  NPM/Yarn(说明:目前主流的前端应用框架React、Angular、Vue采用这种方式)

    二、软件包管理

      软件包源:

      • 公有/私有软件包源服务器
      • 基于源码版本管理服务器,比如直接使用Git服务器来管理和分布库的版本
      • 本地的软件包,使用相对路径导入本地仓库

      公有/私有软件包源服务器对于直接使用源服务器,有几种方式:

    • .
      • npmjs.org提供的官方源。它可以提供最新的软件包,但是国内开发者使用的时候会受到影响
      • 淘宝的cnpm源。它可以为国内的开发者提供更快速的下载服务
      • 搭建私有的NPM服务器,提供更为安全快速的Node.js环境

    三、前端代码的打包

    • 用于管理运行时(如路由懒加载)的runtime.js文件
    • 样式相关的styles.css
    • 解决JavaScript在不同浏览器兼容的polyfill.js
    • 程序相关逻辑的main,js

    四、设计构建流

     如何设计构建流?

    • 任务(用于下载的npm install,用于测试的npm test)
    • 步骤拆解(build拆解为build:icon build:lib)
    • 展现形式(底层库->库+文档,UI框架->库+UI组件的演示库)
    • 插件

     构建工具:自动化任务

    • NPM脚本,适用于脚本简单的应用构建
    • Gulp/Grunt,适用于复杂的项目工作流构建
    • webpack,进行项目的模块化打包

     使用包管理工具构建NPM

    • 实现的时候,我们一般会结合NPM脚本与webpack或Gulp/Grunt使用

     使用构建工具构建Grunt/Gulp

     使用打包工具构建webpack

     实现构建流

      这些代码及配置的来源,可能是前端框架自带的,也可能是前端应用的脚手架提供的

     插件定义构建流

    1. 查找是否有对应的插件
    2. 对比不同的插件适配层
    3. 创建插件的适配层
    4. 验证插件是否有效
    5. 重复 (2) ~ (4)步
    6. 如果插件都不适用,那么重新编写插件或改写原有的插件

     框架定义构建流

      前端应用构建三要素HTML,CSS,JavaScript


    五、持续交付

     部署方式

    • 持续部署。构建完成即部署,常见于测试环境
    • 自动化部署。在持续部署的基础上稍微弱化,即需要人为的介入才能自动化部署
    • 手动部署。即全程需要人为操作的部署流程 

     设计持续集成

      优点:

    • 有一个随时可发布的应用软件
    • 方便测试人员进行测试
    • 及时地展示项目的代码集成情况

      主要内容:

    • 对应用进行构建
    • 进行应用的测试,利用代码来完成测试有助于减少bug
    • 部署应用到对应的环境,以提供一个联调和测试环境

      要做什么:

    • 找到相应的工具
    • 进行相应的配置
    • 运行本章中完成的构建脚本
    • 编写部署脚本

      案例:

    • 开源工具Jenkins、GoCD
    • Jenkins的配置文件Jenkinsfile
    • 安装依赖 -> 执行构建 -> 运行测试

     自动化部署

    • 将静态文件部署到服务器上,使用Nginx配置域名及相应后台服务的地址
    • 搭配Docker,编写Dockerfile完成快速的应用部署
    • 编写一个对应的NPM脚本,配置到Jenkinsfile中,完成整个持续部署的流程
    • (可选)考虑“回滚机制、蓝绿部署、灰度发布”等因素
    • (可选)使用UI自动化测试来测试部分功能是否正常,以及测试相应的后端服务连接

     环境配置

      针对不同的环境(开发、线上)编写构建脚本

     开发环境配置

    • 在本地开发环境开发时,我们需要将HTTP请求指向本地的Mock Server
    • 在本地集成后端服务时,需要将HTTP请求直接指向开发环境的后台服务
    • 针对不同环境的构建配置来配置不同的构建脚本,以用于部署或者调试
    • 在运行时,针对不同环境的产品进行相关服务的配置
    • (可选)构建配置-不同环境的构建配置
    • (可选)代码配置-硬编码,后台获取。例如不同环境的第三方配置、广告、第三方授权服务配置等
    • (可选)代理配置-将HTTP请求指向不同环境的服务器

     线上调试

    • 在URL中添加一些参数,前端代码在运行的过程中去读取这个参数
    • 在LocalStorage中根据某些值是否存在来运行和调试代码
    • 对特定的账号进行权限处理,以获取调试功能
  • 相关阅读:
    ZOJ 3603字符串操作
    ZOJ 3609 求逆元
    HDOJ 4007 Dave【最大覆盖集】
    HDOJ4006 The kth great number 【串的更改和维护】
    【集训笔记】博弈论相关知识【HDOJ 1850【HDOJ2147
    【集训笔记】母函数【母函数模板】【HDOJ1028【HDOJ1085
    【集训笔记】【大数模板】特殊的数 【Catalan数】【HDOJ1133【HDOJ1134【HDOJ1130
    【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546
    【集训笔记】动态规划【HDOJ1159【HDOJ1003
    【集训笔记】二分图及其应用【HDOJ1068【HDOJ1150【HDOJ1151
  • 原文地址:https://www.cnblogs.com/bearRunning/p/12244732.html
Copyright © 2011-2022 走看看