需求拆分原则

1. 单个迭代不能太大

2. 需求可交付,功能闭环

3. 成本意识 二八法则

4.  预期价值体现

……………………………………………………………………………… 做

【直接 git clone】or【重新初始化】

cd <your-path>

git init

git remote add origin <url>

git pull origin master

git add  .

git commit -am ""

git push

<要求设置一个上游分支>

【vim .gitignore】push之

git checkout -b <branchname_v1.0.0>

【structure】

$ ls
image/ page/ service/ util/ view/

【npm init】

【webpack】commonjs 过来的,前进是 ES6 。(进一步说明  loader是webpack核心)

npm install -g webpack@1.15.0   , 可以省略版本安装最新但最新的 命令要安装 webpack-cli

npm install webpack@1.15.0 --save-dev

【webpack <entry> <output> 演示目的】or 【webpack.config.js】

【自带 loader 机制】
var config =  {
entry: {
index: ['./src/page/index/index.js'],
login: ['./src/page/login/index.js'],
},
output: {
path: './dist/',
filename: 'js/[name].js',
}
}; module.exports = config;

【加载 window全局对象下 jQuery】

var config = {
entry: {
index: ['./src/page/index/index.js'],
login: ['./src/page/login/index.js'],
},
output: {
path: './dist/',
filename: 'js/[name].js',
},
externals: {
jquery: 'window.jQuery'
}
}; module.exports = config;

【使用 commonchunk plugin抽取公共模块】https://webpack.js.org/plugins/commons-chunk-plugin/#src/components/Sidebar/Sidebar.jsx

1. 注意 common 是一个公共全局模块

var webpack = require('webpack');
var config = {
entry: {
common: ['./src/page/common/index.js'],
index: ['./src/page/index/index.js'],
login: ['./src/page/login/index.js'],
},
output: {
path: './dist/',
filename: 'js/[name].js',
},
externals: {
jquery: 'window.jQuery'
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
filename: "js/base.js"
})
]
}; module.exports = config;

【加载 css 的  loader】or 【单独打包 plugin + loader】

注意 ExtractTextPlugin   +   module loader配置

var ExtractTextPlugin   = require("extract-text-webpack-plugin");
var webpack = require('webpack'); var config = {
entry: {
common: ['./src/page/common/index.js'],
index: ['./src/page/index/index.js'],
login: ['./src/page/login/index.js'],
},
output: {
path: './dist/',
filename: 'js/[name].js',
},
externals: {
jquery: 'window.jQuery'
},
module:{
loaders: [
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
filename: "js/base.js"
}),
new ExtractTextPlugin("css/[name].css")
]
}; module.exports = config;

【html 模板处理】HtmlWebpackPlugin

// 获取HtmlWebpackPlugin配置
var getHtmlConfig = function (name) {
return {
template: 'src/view/' + name + '.html',
filename: 'view/' + name + '.html',
inject: true,
hash: true,
chunks: ['common', name],
};
};
。。。
plugins: [
// 独立通用模块抽取到 base.js
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
filename: "js/base.js"
}),
// 单独打包 css
new ExtractTextPlugin("css/[name].css"),
// 打包 html 模板
new HtmlWebpackPlugin(getHtmlConfig('index')),
new HtmlWebpackPlugin(getHtmlConfig('login')),
],

【进一步从 html 本身动手,抽取 <head>】npm i -D html-loader

然后导入 <%= require('html-loader!./layout/head.html') %>
 
【assets 字体资源 图片资源 处理 loader】npm i -D url-loader@0.5.8 file-loader@0.11.1

   module: {
loaders: [
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
{ test: /\.(gif|png|jpg|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=100&name=resource/[name].[ext]' },
]
},

【自动刷新 webpack-dev-server】npm i -g webpack-dev-server@1.16.5

要执行 webpack-dev-server --inline --port 8088

先做这个事情

output: {
path: './dist',
publicPath : '/dist', //发布公共位置
filename: 'js/[name].js'
},

最佳实践  WEBPACK_ENV + npm scripts

// 环境变量配置,dev / online
var WEBPACK_ENV = process.env.WEBPACK_ENV || 'dev'; if('dev' === WEBPACK_ENV){
config.entry.common.push('webpack-dev-server/client?http://localhost:8088/');
}

修改成 npm scripts

  "scripts": {
"dev": "WEBPACK_ENV=dev webpack-dev-server --inline --port 8088",
"dev_win": "set WEBPACK_ENV=dev && webpack-dev-server --inline --port 8088",
"dist": "WEBPACK_ENV=online webpack -p",
"dist_win": "set WEBPACK_ENV=online && webpack -p"
},

然后可以 npm run dev_win   运行命令~~~

【脚手架搭建好了】

git add .

git commit -am "脚手架搭建完成"

git push

git merge origin master

git tag tag-dev-initial (大版本)
git push origin tag-dev-initial 
 

……………………………………………………………………………………………………想

【新建 git 项目】说的是 git init / git clone

【git 权限配置】说的 ssh

【gitignore】忽略且不跟踪的文件

【文件目录划分】Project structue

【git 分支使用规范】主干  +   分支 v1.0 这样方式迭代

【npm 初始化】npm init   ->  package.json

【安装/卸载 npm 包】npm i

【npm 机制】下载过放到 cache ,项目还是会下载一份。

【npm 命令】npm scripts

【webpack 设计思想】核心是 loader + plugin 。

【webpack 编译原理】/dist       处理方式 变成 base64 ,字符串 ,需要直接emmit源文件需要自己配置。

【webpack.config.js 演进】搭积木。

【js loader】

【js 多入口配置】

【目标文件按文件类别存放】

【jquery 引入方式】cdn  window.jQuery

【提取通用模块】common插件,这个在webpack4.0版本已经废除。

【css loader】

【css 打包成单独文件】

DUMP101 企业级电商FE的更多相关文章

  1. DUMP102 企业级电商FE

    101 完成 webpack 配置后,有一套类似 live-reload 自动刷新提供 REPL 环境. [配置 webpack.config.js 别名,方便 js 文件做require 支持路径别 ...

  2. Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式

    史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...

  3. Java从零到企业级电商项目实战

    欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回复关键字免费领取)回复关键字:"电商项 ...

  4. DUMP2 企业级电商项目

    正常设计数据库表,按照数据流向. ~~闭环核心业务 [1用户]登录 =>浏览[2分类]+浏览[3商品]=>加入[4购物车]=>结算[5订单]+[6收货地址]=>[7支付] [购 ...

  5. 从0到上线开发企业级电商项目_前端_01_sublime使用技巧

    一.用户设置 { "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme", &quo ...

  6. DUMP 5 企业级电商项目

    [订单模块] 创建订单 商品信息  订单列表  订单详情 取消订单 订单列表  订单搜素  订单详情  订单发货 [创建订单]  购物车勾选商品 涉及 Cart Product  => 一个商品 ...

  7. DUMP 3.8 企业级电商项目 支付宝之类

    ① 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 获得一个 使用环境描述 APPID.授权回调地址.沙箱钱包哪里下载之类的 ② 沙箱环境 ...

  8. DUMP3.5 企业级电商项目

    购物车模块 加入商品 更新商品数 查询商品数 移除商品 单选/取消 全选/取消  购物车列表 [浮点型商业运算精度丢失问题]ej1st 一书提到 float double只适合科研计算,BigDeci ...

  9. DUMP3 企业级电商项目

    [开发模式]controller - service(合法校验问题) - dao   反过来也没问题 用户模块 登录 注册 用户名验证(实时反馈前端) 忘记密码 重置密码 退出登录 更新用户信息 获取 ...

随机推荐

  1. requests的基本用法

    r = requests.get('https://api.github.com/events', params = {'key1': 'value1', 'key2': 'value2'}) r = ...

  2. ORACLESQL语句的优化

    ORACLESQL语句的优化: 选择最有效率的表名顺序:应该选择记录条数最少的表作为基表! 因为Oracle解析器的处理顺序是从右至左的.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们. ...

  3. (四)esp8266 MDNS域名服务

    (实例一)ESP8266 TFT(ST7735)彩屏-web刷图 https://www.arduino.cn/thread-42247-1-1.html (实例二) 自己当AP时建立MDNS域名 h ...

  4. Oracle 查询表对应的索引

    select col.table_owner "table_owner", idx.table_name "table_name", col.index_own ...

  5. odoo学习

    odoo视图对应模型:model="ir.ui.view"> <record id="mrp_workcenter_view_light_inherit&qu ...

  6. SpringBoot开发案例之整合Activiti工作流引擎

    前言 JBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baeyens离开JBoss后,JBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过,目前官 ...

  7. 使用埃拉托色尼筛选法(the Sieve of Eratosthenes)在一定范围内求素数及反素数(Emirp)

    Programming 1.3 In this problem, you'll be asked to find all the prime numbers from 1 to 1000. Prime ...

  8. C#中使用JavaScriptSerializer类实现序列化与反序列化

    1.添加引用 JavaScriptSerializer类的使用需要引用System.Web.Extensions.dll文件,根据路径:C:\Program Files (x86)\Reference ...

  9. Shell命令-文件及目录操作之pwd、rm

    文件及目录操作 - pwd.rm 1.pwd:显示当前所在位置信息 pwd命令的功能说明 pwd命令用于显示当前工作目录的绝对路径,以便在各个目录间来回切换. pwd命令的语法格式 pwd [OPTI ...

  10. nginx(一)初识nginx

    什么是nginx?Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. Nginx应用场景(都很常用): 1:http服务器.N ...