zoukankan      html  css  js  c++  java
  • 前后端项目对接流程梳理

     

    课程目标

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

    架构设计

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

    技术选型

    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和域名的配置
    
    
    存活监控
    
    监控主战地址
    监控第三方内容地址
    脚本一场监控,性能监控,自定义监控
    
    
  • 相关阅读:
    swift运算符使用_02_swift基本数据类型
    OSChina-01Swift终端命令行
    开源框架汇总-01-第三方
    修改App名称-01-修改项目中APP名
    NSAttributedString.h 中文本属性key的说明-06
    SQLite总结-05
    Linux系统判断gcc是否安装
    翻译文件结构规范
    并行SVN版本控制
    页面设计规范
  • 原文地址:https://www.cnblogs.com/gluncle/p/9844471.html
Copyright © 2011-2022 走看看