DUMP101 企业级电商FE
需求拆分原则
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】
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
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 项目】说的是 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的更多相关文章
- DUMP102 企业级电商FE
101 完成 webpack 配置后,有一套类似 live-reload 自动刷新提供 REPL 环境. [配置 webpack.config.js 别名,方便 js 文件做require 支持路径别 ...
- Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...
- Java从零到企业级电商项目实战
欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回复关键字免费领取)回复关键字:"电商项 ...
- DUMP2 企业级电商项目
正常设计数据库表,按照数据流向. ~~闭环核心业务 [1用户]登录 =>浏览[2分类]+浏览[3商品]=>加入[4购物车]=>结算[5订单]+[6收货地址]=>[7支付] [购 ...
- 从0到上线开发企业级电商项目_前端_01_sublime使用技巧
一.用户设置 { "color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme", &quo ...
- DUMP 5 企业级电商项目
[订单模块] 创建订单 商品信息 订单列表 订单详情 取消订单 订单列表 订单搜素 订单详情 订单发货 [创建订单] 购物车勾选商品 涉及 Cart Product => 一个商品 ...
- DUMP 3.8 企业级电商项目 支付宝之类
① 沙箱登录:https://openhome.alipay.com/platform/appDaily.htm 获得一个 使用环境描述 APPID.授权回调地址.沙箱钱包哪里下载之类的 ② 沙箱环境 ...
- DUMP3.5 企业级电商项目
购物车模块 加入商品 更新商品数 查询商品数 移除商品 单选/取消 全选/取消 购物车列表 [浮点型商业运算精度丢失问题]ej1st 一书提到 float double只适合科研计算,BigDeci ...
- DUMP3 企业级电商项目
[开发模式]controller - service(合法校验问题) - dao 反过来也没问题 用户模块 登录 注册 用户名验证(实时反馈前端) 忘记密码 重置密码 退出登录 更新用户信息 获取 ...
随机推荐
- 跨域 - 自定义 jsonp实现跨域
问题:在现代浏览器中默认是不允许跨域. 办法:通过jsonp实现跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是 ...
- ERROR in static/js/0.5d7325513eec31f1e291.js from UglifyJs
今天把vue项目打包是遇到这个问题.这是在服务器上打包时报的错误,本地打包不报错!很头疼!上网查了很多,发现有很多人和我遇到类似的问题,但是都没有解决我的问题!后来灵机一动,解决问题,这就跟大家说一下 ...
- 正益工作能担起PaaS+SaaS的未来探索吗?
没有竞争,行业没有未来.不参与竞争,企业没有未来.中国企业的类型纷繁复杂,也决定了企业的多样化需求.云计算和移动化的双重叠加,企业管理需要重新梳理,企业业务创新日益频繁,个性化需求日益突出,软件服务商 ...
- 全解史上最快的JOSN解析库 - alibaba Fastjson
JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换 ...
- 移除Windows图标快捷方式小箭头
以管理员身份运行cmd,输入 reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f & taskkill /f / ...
- 二十九、layui分页插件的使用
<div id="page1"></div> <script> //开启分页 var page = 1; function findstoreL ...
- vi/vim 使用
1. vim一共有4个模式:(linux下最好用的编辑器) 正常模式 (Normal-mode) 插入模式 (Insert-mode) 命令模式 (Command-mode) 可视模式 (Visua ...
- Django admin注册model究竟要怎么写才优雅 批量注册model
比如在Django admin 注册models时,会用到. 对于APP里自带的models,可以使用这种方式注册. from django.contrib import admin # Regist ...
- Scrapy 框架 配置文件
配置文件 基本配置 #1.项目名称,默认的USER_AGENT由它来构成,也作为日志记录的日志名 BOT_NAME = 'Amazon' #2.爬虫应用路径 SPIDER_MODULES = ['Am ...
- MT【314】正切比值
(05复旦)已知三角形$\Delta ABC$满足$\tan A:\tan B:\tan C=1:2:3$,求$\dfrac{AC}{AB}$____ 解答:设$x=tan A$,利用恒等式$\tan ...