101 完成 webpack 配置后,有一套类似 live-reload 自动刷新提供 REPL 环境。

【配置 webpack.config.js 别名,方便 js 文件做require 支持路径别名简写】

  resolve:{
alias:{
util : __dirname + '/src/util',
page : __dirname + '/src/page',
service : __dirname + '/src/service',
image : __dirname + '/src/image',
}
},

【Access-Control-Allow-Origin】跨域问题

charles软件  remote map 功能,这样就能用同域名下请求 url l额。 (浏览器配合 switchy omega 切换成系统代理 给 charles 监听。)

==========================================

common工具

网络请求

URL路径

模板渲染  hogan

字段验证 通用提示

统一跳转

页面布局  layout

navigator  header content menu footer

【技巧】~ 扁平化 、 对称 、 对齐 、 距离 、配色(百搭)

1。定宽布局

2。通用部分抽离

3。icon-font 引入

4。通用样式

通用导航条开发

通用页面头部开发

通用侧边导航开发

通用结果提示页开发

=============================================做

1. util 全局通用的工具 mm.js  ,供其它js require 调用。

 var _mm = {
// 网络请求
request : function(param){
var _this = this;
$.ajax({
type : param.method || 'get',
url : param.url || '',
dataType : param.type || 'json',
data : param.data || '',
success : function(res){
// 请求成功
if( === res.status){
typeof param.success === 'function' && param.success(res.data,res.msg);
}
// 未登录
else if( === res.status){
_this.doLogin();
}
// 请求数据错误
else if( === res.status){
typeof param.error === 'function' && param.error(res.msg);
}
},
error : function(err){
// 返回 404 503 错误码
typeof param.error === 'function' && param.error(err.statusText);
} })
},
// 统一登录处理
doLogin : function(){
// redirect 支持返回
window.location.href = './login.html?redirect=' + encodeURIComponent(window.location.href);
}
}; module.exports = _mm;

2.正则获取url参数    list.do?key1=xxx&key2=       【目标获得 value       这个value要先弄key,然后value的结尾是 & 或者 没有东西】

// 取 key 要表示 开头有或没有 &     ,得到 (^|&)            注释^为开头

// 取 value 要表示 ([^&]*)(&|$)                                            注释^为取反     (&|$)

// window.location.search.substr(1)  跳过问号

   // 获取 url 参数
getUrlParam:function(name){
var regxp = new RegExp('(^|&)'+name+'=([^&]*)(&|$)');
var result = window.location.search.substr().match(regxp);
return result ? decodeURIComponent(result[]):null;
},

3. 渲染html 、 npm  i --save hogan.js@3.0.2

 // 渲染引擎
renderHtml: function(htmlTemplate,data){
var template = Hogan.compile(htmlTemplate);
var result = template.render(data);
return result;
},

4.正则验证字段

   // 字段验证
validate: function(value,type){
var stripValue = $.trim(value);
// 非空判断
if('require' === type){
return !!stripValue;//对空值转一次布尔 true 再转一次 false
}
// 手机号验证
if('phone' === type){
return /^\d{}$/.test(stripValue);
}
// 邮箱格式验证
if('email' === type){
return /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{,})$/.test(stripValue);
}
//
},

5.meta 元数据提取到 header.html

<script> 提取到 footer.html

6.通用布局 css

/*
* @Author: chenhui7373
* @Date: 2018-07-06 09:03:05
* @LastEditors: chenhui7373
* @LastEditTime: 2018-07-06 09:33:45
* @Description:
* @Email: sunw31@163.com
*/ /* css 重置 */
*{
margin: ;
padding: ;
}
body{
background: #f6f6f6;
font: 12px/1.5 tahoma,arial,Microsoft YaHei,sans-serif;
}
li{
list-style: none;
}
img{
display: block;
border: none;
}
label{
cursor: pointer;
}
input[type='checkbox']{
cursor: pointer;
} /* 定宽布局 */
.w{
width: 1080px;
margin: auto;
position: relative;
overflow: hidden;
}
/* .large .w{
width: 1600px;
} */
/* 全局通用样式 */ /* 隐藏类 */
.hide{
display: none;
}
/* 超链样式 */
.link{
color: #;
cursor: pointer;
text-decoration: none;
}
.link:hover{
color:#e80012;
}
.link-text{
color:#;
text-decoration: none;
}
/* btn */
.btn{
display: inline-block;
padding: 20px;
height: 40px;
line-height: 40px;
vertical-align: middle;
background: #c60023;
border: none;
font-size: 17px;
font-weight: bold;
color: #fff;
outline: none;
cursor: pointer;
text-decoration: none;
}
.btn-mini{
height: 25px;
line-height: 25px;
font-size: 12px;
padding: 10px;
}
/* loading */
.loading{
margin:10px auto;
display: block;
width: 65px;
height: 65px;
border: 1px solid #ddd;
border-radius: 5px;
background: url(../../image/icon/loading.gif) no-repeat;
opacity: .;
}

7. 字体资源

npm i --save  font-awesome@4.7.0

直接使用  webpack.config.js alias下node_modules ,单刀直入复制路径引用 .min.css。

========================================================================

8. 导航条

nav-simple.html

<div class="nav-simple">
<div class="w">
<a class="logo">MMALL</a>
</div>
</div>

/common/nav-simple/index.js index.css

/*  index.css */
.nav-simple{
height: 60px;
line-height: 60px;/* 字体底部到字体顶部撑开,布局上一切都是容器。 */
border-bottom: 1px solid #ddd;
background: #fff;
}
.nav-simple .logo{
font-size: 26px;
font-weight: bold;
color: #c60023;
} /* index.js */
'use strict';
require('./index.css')

nav.html

<div class="nav">
<div class="w">
<div class="user-info">
<span class="user not-login">
<span class="link js-login">登录</span>
<span class="link js-register">注册</span>
</span>
<span class="user login">
<span class="link-text">
欢迎,
<span class="username"></span>
</span>
<span class="link js-logout">退出</span>
</span>
</div>
<ul class="nav-list">
<li class="nav-item">
<a class="link" href="./cart.html">
<i class="fa fa-shopping-cart"></i>
购物车(<span class="cart-count"></span>)
</a>
</li>
<li class="nav-item">
<a class="link" href="./order-list.html">我的订单</a>
</li>
<li class="nav-item">
<a class="link" href="./user-center.html">我的MMall</a>
</li>
<li class="nav-item">
<a class="link" href="./about.html">关于MMall</a>
</li>
</ul>
</div>
</div>

/common/nav/index.js index.css

/*index.css */
.nav{
background: #eee;
height: 30px;
line-height: 30px;
}
/* 用户部分 */
.nav .user{
float: left;
}
.nav .user.login{
display: none;
}
.nav .user .link{
margin-right: 5px;
}
/* 导航链接部分 */
.nav .nav-list{
float: right;
}
.nav .nav-list .nav-item{
display: inline-block;
margin-left: 5px;
} /* index.js */
'use strict'; // 导航条的 css 样式
require('./index.css');

9.脚注

 .footer{
padding-bottom: 10px;
} .footer .links{
text-align: center;
line-height: 30px;
color: #;
} .footer .links .link{
padding: 10px;
} .copyright{
text-align: center;
line-height: 30px;
color: #;
}

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

  1. DUMP101 企业级电商FE

    需求拆分原则 1. 单个迭代不能太大 2. 需求可交付,功能闭环 3. 成本意识 二八法则 4.  预期价值体现 ……………………………………………………………………………… 做 [直接 git cl ...

  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. Vue-Router模式、钩子

    转:https://www.cnblogs.com/heioray/p/7193841.html 模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const ro ...

  2. org.springframework.web.context.support.XmlWebApplicationContext.refresh Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreatio

    错误异常: 11-Apr-2019 18:07:14.006 警告 [RMI TCP Connection(5)-127.0.0.1] org.springframework.web.context. ...

  3. SQL 和 NoSQL 的区别

    一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). No ...

  4. (十)Modifying Your Data

    Elasticsearch provides data manipulation and search capabilities in near real time. By default, you ...

  5. leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes

    263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 .3.5整除,即能被整除才去除这些数 class Solution ...

  6. 主成分分析 —PCA

    一.定义 主成分分析(principal components analysis)是一种无监督的降维算法,一般在应用其他算法前使用,广泛应用于数据预处理中.其在保证损失少量信息的前提下,把多个指标转化 ...

  7. Linux内存管理 (7)VMA操作

    专题:Linux内存管理专题 关键词:VMA.vm_area_struct.查找/插入/合并VMA.红黑树. 用户进程可以拥有3GB大小的空间,远大于物理内存,那么这些用户进程的虚拟地址空间是如何管理 ...

  8. SkylineGlobe7.0.1版本 支持SQLite(*.sqlite;*.db)数据库

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

  9. php curl cookie 读写

    普通 curl post 请求 public static function curlPost($url, $post_fields = array(), $timeout = 5) { $timeo ...

  10. Python中的垃圾回收与del语句

    python中的垃圾回收采用计数算法 一个对象如果被引用N次,则需要N次(即计算引用次数为零时)执行del 才能回收此对象. a = 100 b = a del a print(b) print(a) ...