需求拆分原则

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. 跨域 - 自定义 jsonp实现跨域

    问题:在现代浏览器中默认是不允许跨域. 办法:通过jsonp实现跨域   在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是 ...

  2. ERROR in static/js/0.5d7325513eec31f1e291.js from UglifyJs

    今天把vue项目打包是遇到这个问题.这是在服务器上打包时报的错误,本地打包不报错!很头疼!上网查了很多,发现有很多人和我遇到类似的问题,但是都没有解决我的问题!后来灵机一动,解决问题,这就跟大家说一下 ...

  3. 正益工作能担起PaaS+SaaS的未来探索吗?

    没有竞争,行业没有未来.不参与竞争,企业没有未来.中国企业的类型纷繁复杂,也决定了企业的多样化需求.云计算和移动化的双重叠加,企业管理需要重新梳理,企业业务创新日益频繁,个性化需求日益突出,软件服务商 ...

  4. 全解史上最快的JOSN解析库 - alibaba Fastjson

    JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换 ...

  5. 移除Windows图标快捷方式小箭头

    以管理员身份运行cmd,输入 reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f & taskkill /f / ...

  6. 二十九、layui分页插件的使用

    <div id="page1"></div> <script> //开启分页 var page = 1; function findstoreL ...

  7. vi/vim 使用

    1.  vim一共有4个模式:(linux下最好用的编辑器) 正常模式 (Normal-mode) 插入模式 (Insert-mode) 命令模式 (Command-mode) 可视模式 (Visua ...

  8. Django admin注册model究竟要怎么写才优雅 批量注册model

    比如在Django admin 注册models时,会用到. 对于APP里自带的models,可以使用这种方式注册. from django.contrib import admin # Regist ...

  9. Scrapy 框架 配置文件

    配置文件 基本配置 #1.项目名称,默认的USER_AGENT由它来构成,也作为日志记录的日志名 BOT_NAME = 'Amazon' #2.爬虫应用路径 SPIDER_MODULES = ['Am ...

  10. MT【314】正切比值

    (05复旦)已知三角形$\Delta ABC$满足$\tan A:\tan B:\tan C=1:2:3$,求$\dfrac{AC}{AB}$____ 解答:设$x=tan A$,利用恒等式$\tan ...