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. kafka-rest:A Comprehensive, Open Source REST Proxy for Kafka

    Ewen Cheslack-Postava  March 25, 2015  时间有点久,但讲的还是很清楚的 As part of Confluent Platform 1.0 released ab ...

  2. JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)_javascript技巧_

    JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)_javascript技巧_--HTML5中文学习网 http://www.html5cn.com.cn/shili/javascripts/79 ...

  3. Linux学习笔记(一)----Ubuntu下的apt命令

    一.原理与目录 先介绍几个和apt-get相关的目录: /var/lib/dpkg/available文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其 ...

  4. Cordova入门系列(二)分析第一个helloworld项目

    版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了如何创建一个cordova android项目,这章我们介绍一下创建的那个helloworld项目的代码,分析其运行. MainActiv ...

  5. split函数用法

    split函数详解   split翻译为分裂.  split()就是将一个字符串分裂成多个字符串组成的列表. split()当不带参数时以空格进行分割,当代参数时,以该参数进行分割. //---当不带 ...

  6. 04-JavaScript之常见运算符

    JavaScript之常见运算符 1.赋值运算符 以var x=12,y=5来演示示例 运算符 例子 等同于 运算结果 = x=y   x=5 += x+=y x=x+y x=17 -= x-=y x ...

  7. 让linux启动更快的方法

    导读 进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间. 在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑.在你把手从电源键移到键盘上的时候,B ...

  8. Linux使用百度云

    导读 百度云没有Linux客户端,于是有大神用Go语言写出来一个叫BaiduPCS-Go的命令行盘客户端,可以通过终端操作百度云盘,在Linux上实现上传下载.但是因为是命令行版本的,对没有命令行使用 ...

  9. Cnario 3.8支持哪些操作系统?

    Cnario是基于Windows平台开发的软件,包含Server.Messenger和Player三个组件,支持以下Windows 版本系统: Server/Messenger 支持英文版的以下操作系 ...

  10. 关于Java面试

    Java基础知识复习 1. 简单讲一下Java跨平台的原理 由于操作系统(Windows.Linux)支持的指令集,不是完全一致的.就会让我们程序在不同的操作系统上执行不同的代码.Java开发了不同操 ...