前后端项目对接流程梳理

 

课程目标

掌握一个电商网站从设计到上线的整个过程所涉及的流程 
具备独立开发一个前端项目的能力

 

架构设计

前后端完全分离
分层架构
模块化

 

技术选型

HTMl CSS JS jQery

 

辅助工具

Webpack NodeJs NPM Shell

 

效率工具

Sublime Chrome Charles Git

 

课程安排

//基础框架的搭建
双平台的开发环境安装
git仓库规范化用法
webpack脚手架搭建实战
//通用模块
可高复用工具类设计与封装
通用模块设计与独立打包方法
高逼格UI开发经验与技巧
//用户模块
数据安全性处理方案
表单同步/异步验证
小型SPA开发
//商品模块 jQuery 插件模块改造 独立组建抽离技巧 多功能列表开发 //购物车模块 商品状态随时验证方案 模块内部方法调用方式 非Form提交时的数据验证 //订单模块 Modal式组件封装思想 城市联动操作 复杂表单回填 //支付模块 支付宝支付功能对接 支付状态动态监测 支付成功回执处理 //后台管理 管理后台的实现思路 React框架及组件化 React-Router的使用 //访问数据分析 pv/uv 流量来源监控 用户特征分析 //SEO优化 SEO原理 关键词设计 SEO监控 //线上部署 线上服务器的搭建 自动化脚本编写 域名规划与nginx配置 //可用性监控 外部监控原理 第三方监控设置 更高级监控方式

 

电商平台需求分析

这里写图片描述

//需求拆分原则
单个迭代不宜太大
需求可交付 ,能够形成功能闭环
有成本意识,遵循二八原则
有预期的价值体现
//提炼核心需求
用户端(展示 购物车 下单 支付 订单 用户)
后台管理(商品管理 品类管理 订单管理 管理员登陆)
//电商功能拆分--用户端
商品 》 首页 商品列表 商品详情
购物车 》 购物车梳理阿哥,添加删除商品 购物车提交
订单 》 订单确认(地址管理),订单提交,订单列表,订单详情
支付 》 支付
用户 》 登陆 注册 个人信息  找回密码 修改密码
//电商功能拆分--管理后台
商品管理 》 添加/编辑商品 查看商品 ,下架
品类管理 》 添加品类 查看品类
订单管理 》 订单列表 订单详情 发货
权限    》 管理员登陆
//参与感 更深入了解业务和需求 丰富其他领域的知识 堤防不靠谱的需求

 

1-3 架构设计及技术选型

//架构设计--分层架构
定义: 把功能相似 ,抽吸那个级别相近的实现进行分层隔离
优势:松散耦合(易维护 易复用 易扩展)
常见的分层方式: MVC MVVM
//架构设计--模块化
定义:解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程
意义:解耦 可并行开发
模块化方案: AMD CMD CommonJS ES6

 

这里写图片描述

//技术选型
软件过程

软件过程选择--敏捷开发 定义:以用户需求进化为核心 ,采用迭代,循序渐进的方法进行软甲开发 是一种迭代的意识和方法,而不是概念和工具 优点:能够应对满足不断变化的需求 不足:对团队成员的能力要求比较高 前后端分离 前后端分离方式--不分离 前后端公用一项项目目录,甚至页面内嵌js,css 本地开发环境搭建成本高 共同维护成本高 发布风险高 前后端分离方式--部分分离 后段负责页面模版(JSP/Velocity/Freemarker) 本地开发环境搭建成本较高 更新页面模板仍需要后段协助 ,效率不够高 需要前后端同时发布 前后端分离方式--完全分离1 方案1 :velocity 发布的时候同步到后段 优点 完全分离 ,能直接生成动态的模版,利于SEO 缺点:系统复杂度高 ,需要前后端同时发布 前后端分离方式--完全分离2 方案2 :纯静态html 完全通过接口做数据交互 优点:完全脱离后段模版,系统复杂程度低 缺点:不利于seo 优化方案:Server Render 蜘蛛定制页面 框架 jQuery Angular Avalon Vue React css Less Sass 用户端(求稳 用户类多样 有SEO要求 多页应用)选用jQuery css 管理系统(求快 用户类型单一 无SEO要求) 选用 React Sass 构建工具 Grunt Gulp Webpack 选用Webpack 版本控制 svn git 选用git 发布方式 拉取代发布代码 编译大包 发布到线上机器 发布方式--域名规划 html > www./admin.com js+css > s. image > img. 技术选型总结 软件过程:敏捷开发 前后端分离: 完全分离,纯静态方式 模块发方案:CommonJS + Webpack 框架选择:用户端jQuery + css 管理系统React 版本控制: git 发布过程:拉去代码 编译打包 发布到线上机器

 

1-4 前后端配合方式及数据接口定义

前后端配合方式及数据接口的定义

//职责范围

后端(数据存储 文件服务 数据接口)
前端(数据请求 数据处理 页面展示)

//接口文档规范--格式

模板 -- 接口名称
/product.do --接口地址 request --请求信息 reponse --响应信息

这里写图片描述

接口文档规范–请求和响应

这里写图片描述

2-1开发环境的搭建

语言环境

jQuery Webpack node.js git

node.js简介

定义:js的服务端运行环境
用途:构建工具webpack的环境依赖
特点:单线程,异步编程
应用场景:低运算,高I/O

node.js包管理工具--npm

//git的安装和配置
git简介
介绍:git是一款免费,开源的分布式版本控制系统,用于敏捷搞笑处理任何或大或小的项目

下载地址:https://git-scm.com/download/mac

git常用命令
git init
git commit -am '注释'
git checkout branch
git merge git pull / git push git配置 --gitconfig

 

这里写图片描述

开发工具

sublime Chrome Charles

//sublime 快捷键
cmd + shift + d 复制行
cmd + shift + k 删除行
cmd + ;注释
cmd + w 关闭当前标签
cmd + n 打开新标签
cmd + shift + t 恢复关闭的标签
cmd + d 查找并选择
cmd + f 当前页查找
cmd + shift + f 在文件夹中查找 

 

3-1 项目初始化基于模块化的脚手架搭建 
3-1-1 项目目录 
3-1-2 项目工具

3-2 项目目录的搭建 
3-2-1git仓库的建立

3-2-1-1git项目建立 
目录结构的设计 
src(page+view service util image) 
dist(View Js Css resource )

登陆码云:https://gitee.com (创建一个新的项目)

1: git clone git@gitee.com:jjsnc/jjsnc.git 
如果出现以下错误 Permission denied (publickey) 需要配置用户名和密码

2 git config –global user.name [username] 
git config –global user.email [email]

3: 如何生成SSH key 
3-1 检查ssh key 是否存在 id_rsa.pub 或 id_dsa.pub 
命令: ls -al ~/.ssh 
3-2:如果没有ssh key 生成新的ssh key (一直点击回车即可)

ssh-keygen -t rsa -C "your_email@example.com" 

 

3-3 :将ssh key 添加到github 中 
复制:id_rsa.pub文件 里面的文字信息 
Mac 命令:pbcopy < ~/.ssh/id_rsa.pub

目前为止git仓库已经创建完成 
下一步需要把本地的git仓库和远程的关联在一起 
命令: rm-rf jjsnc (删除此文件夹) 
命令:mkdir jjsnc (创建文件夹) 
命令:cd jjsnc (在此文件夹下创建test.html 文件作为测试) 
命令:git init (在jjsnc 目录下进行初始化) 
命令:ls -al (这时候会出现.git 文件夹) 
命令:git remote add origin git@gitee.com:jjsnc/jjsnc.git 
(origin 跟的是项目的ssh) 
命令:git pull origin master (拉取远程服务器上面的master 分支) 
命令:git status (查看当前状态 目前test.html 是为提交状态) 
命令: git add . (把文件追踪上) 
命令:git commit -am ‘这里改动的备注’ (该改动的代码提交) 
命令:git push ( 把本地的东西都推送到远程的服务器上面) 
命令:git push –set-upstream origin master ( 确定推送到远程服务器那个分支上面 ,就第一次推送到远程服务器的时候使用)

//目前为止 本地文件夹和远程的数据库就对应起来了

3-2-1-2git权限配置 
3-2-1-3gitignore的配置

//此文件夹会设置一个规则 被匹配到的文件都不会被跟踪
命令: vim .gitignore (创建此文件)
.gitignore 文件内容
.DS_Store
/node_modules/
/dist/
命令: git status (查看是否.gitignore 文件是否成功)
命令:ls -al (查看所有文件)
命令:touch .DS_Store (创建此文件 测试.gitignore 是否成功) 命令:git status (发现 .DS_Store 并没有被追踪到) 

 

3-2-1-4 git 切换创建分支命令

命令:git checkout -b jjsnc_v1.0 (checkout 是切换分支 -b表示这个分支还没有 总结:创建这个分枝并且切换到这个新创建的分支上)

命令:git branch (查看所有分支 带* 表示当前的分支)

//然后在该分支下面创建 对应src 及其相对应的目录 git 对空文件夹是不进行追踪的 

 

3-3 脚手架搭建

npm init  会生成 package.json 文件
安装依赖包 npm install XXX
卸载依赖包 nom uninstall XXX
参数: -g 
参数 --registry=https://registry.npm.taobao.org webpack 设计思想 -- require anything (任何需求) 加载方式:各种loader 插件 编译方式:commonjs模块->function 类型模块 官方文档:http://webpack.github.io/docs/ //webpack安装 npm install web pack -g nom install webpack@1.15.0 --save-dev (当前版本项目依赖) webpack -v (查看版本) 仅限此项目 为何全局安装不用版本号 (npm 加载原理 会优先使用本地的npm包) 为什么用1.15.0 官网上不是建议升级2.x了?(为何兼容IE8) 什么是 --save-dev? (把安装包的信息 存放在package.json devDependencies 下面) webpack.config.js entry:js 的入口文件 externals: 外部依赖的声明 output:目标文件 resolve: 配置别名 module: 各种文件 各种loader plugins: 插件 Webpack Loaders html: html-webpack-plugin /html-loader js: babel-loader + babel-preset-es2015 css:style-loader+ css-loader image+font :url-loader Webpack 常用命令 webpack 异步压缩文件 webpack -p 做线上发布时候的压缩打包 webpack --watch 实时监听文件 压缩文件 webpack-dev-server 作用:前端开发服务器 特色:可以在文件改变时,自动刷新浏览器 安装:npm install webpack-dev-server --save-dev 配置:webpack-dev-server/click? http://localhost:8088 实用:webpack-dev-server --port 8088 --inline 

 

3-4 npm和wbpack 初始化

命令: npm init (一直点击enter)
命令: npm install webpack@1.15.0 --save-dev (安装此项目对应的版本webpack 主要是为了兼容性)

index.js

cats = require('./cats.js'); console.log(cats); cats.js var cats = ['dave','henry','martha']; module.exprots = cats; webpack.config.js module.exports = { entry:'./src/page/index/index.js', output: { path:'./dist', filename:'app.bundle.js' } } 命令:webpack 

3-5 webpack 对脚本和样式的处理

//sublime 新插件 
FileHeader 
第一步:command+Shift+p 
第二步:installPackage 
第三步:FileHeader 
实用快捷键:command+option+a 然后enter

js用什么loader 加载? 
官方文档上的例子中entry 只有一个js ,我们有多个怎么办? 
output 里面要分文件夹存放目标文件,怎么设置?

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;

 

 

jquery 引入方法?

npm installe jquery --save

var $ = require('jquery'); $('body').html('Hello jQuery' //这种方式是可以的 但是只是局部不是全局 npm uninstall jquery --save //全局安装jquery 在index.html 中引入 <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> //在全局引入的基础上 模块化引入jquery 在web pack.config.js 配置 externals : { 'jquery': 'window.jQuery' } //单页面 模块化引入 var $$= require('jquery'); $$('body').html('hello jquery 这里是全局的函数'); 

 

我想提取公共模块 怎么处理?

CommonsChunkPlugin

var webpack = require('webpack');

    entry:{
        'common' : ['./src/page/common/index.js'], 'index' : ['./src/page/index/index.js'], 'login' : ['./src/page/login/index.js'] }, plugins:[ // 独立通用模块到js/base.js new webpack.optimize.CommonsChunkPlugin({ name : 'common', filename : 'js/base.js' }) ]

 

 

样式使用怎样的loader? 
webpack打包的css怎么独立成单独的文件?

var ExtractTextPlugin   = require('extract-text-webpack-plugin');

    module: {
        loaders: [
            { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") } ] }, plugins: [ // 独立通用模块到js/base.js new webpack.optimize.CommonsChunkPlugin({ name: 'common', filename: 'js/base.js' }), // 把css单独打包到文件里 new ExtractTextPlugin("css/[name].css") ] 

 

 

3-6 webpack 对html模版的处理

npm install html-webpack-plugin --save-dev 

/ 获取html-webpack-plugin 参数的方法

var getHtmlConfig = function(name) {
    return { template: './src/view/'+name+'.html', filename: 'view/'+name+'.html', inject: true, hash: true, chunks: ['common', name] //chunks 确定当前页面加载哪些js文件 可以查此插件API //html 模版的处理 new HtmlWebpackPlugin(getHtmlConfig('index')), new HtmlWebpackPlugin(getHtmlConfig('login')) //使用 在src view 新建layout html-head.html 文件 在 src view idnex.html 文件内容添加 <%= require('html-loader!./layout/html-head.html') %> npm install html-loader --save-dev

 

3-7 webpack-对icon-font 和图片的处理

npm install url-loader --save-dev 
npm install file-loader --save-dev //webpack.config.js loader 配置 { test: /\.(gif|png|jpg|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=100&name=resource/[name].[ext]' } //css文件路径中注意相对路径层级 

 

3-8 webpack-dev-sertver

npm install webpack-dev-server@1.16.5 --save-dev //全局安装 sudo npm install webpack-dev-server WEBPACK_ENV='dev' webpack-dev-server --inline --port 8088 

 

3-9 项目初始化代码提交与本章知识总结

git add .
git commit -am '备注'
git push 
git tag tag-dev-initial git push origin tag-dev-initial //总结 新建git项目 git权限配置 gitignore配置 文件目录的划分 git分支使用规范 npm 使用 npm初始化 安装 / 卸载npm包 npm常用机制 npm自定义命令的使用 webpack webopack 设计思想 webpack 编译原理 webpack的安装 wbpack.config.js 进化过程 webpack对脚本的处理 js的loader js多入口配置 目标文件按文件类别分别存放 jquery引入方法 提取通用模块 对样式的处理 css文件使用loader css打包成单独的文件 webpack 对html模版的处理 html-webpack-plugin 多页应用里html的处理 通用html模块的抽离 webpack对图片和icon-font 处理 静态资源使用loader url-loader 里参数的配置 ewbpack-dev-server 安装和配置 饮用场景和使用方式 环境变量的设置和读取方法 webpack命令和npm 自定义命令的结合 代码的提交 代码的提交过程 git 的tag用法 

 

5-1 用户模块的设计,功能拆分 加护数据接口分析

用户涉及的页面 
登录

//确定功能点和接口
字段验证 ,通过后提交后段接口
接口成功失败的处理

 

 

注册

对用户名异步验证
字段验证,通过后提交后段接口
接口成功失败的处理
接口
判断用户名是否存在的接口
体积哦啊注册的接口    

 

找回密码

输入密码 获取密码提示问题
输入密码提示问题的答案进行验证
提交修改后的密码
//接口
根据用户名获取密码提示的问题接口
根据用户名,问题和答案获取认证的token接口
根据用户名和认证的token 重置密码接口

 

个人中心

显示个人信息
个人信息的修改
//接口
获取用户信息接口
修改用户信息接口

 

修改密码

根据原密码和新密码来更新用户密码
//接口
更新密码的接口

 

支付宝支付–return_url

这里写图片描述

支付宝支付–notify_url

这里写图片描述

常用seo优化技巧

1:增加页面数量
2:减少页面层级
3:关键词密度
4:高质量友链
5:分析竞对
6:SEO数据监控

访问数据的统计常用指标
访问领 PV UV VV
流量来源
搜索关键词
设备信息

项目上线流程

生产环境配置

安装nodejs
安装webpack
安装ruby && sass
安装 git 并配置权限

发布脚本的编写

拉去最新代码
项目初始化
执行打包编译
复制dist目录到目标目录


nginx和域名的配置


存活监控

监控主战地址
监控第三方内容地址
脚本一场监控,性能监控,自定义监控

转载于:https://www.cnblogs.com/gluncle/p/9844471.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值