美文网首页
Vue.js + cube-ui 高仿饿了么 App 项目学习笔

Vue.js + cube-ui 高仿饿了么 App 项目学习笔

作者: HelloPeng | 来源:发表于2019-12-18 12:01 被阅读0次

    1.Vue.js介绍

    • MVVM框架


      MVVM
    • 什么是Vue.js
      1,它是一个轻量级的MVVM框架
      2,数据驱动+组件化的前端开发
      3,社区完善(GitHub,论坛,聊天室,Twitter)

    • 对比Angular、React
      Vue.js更轻量,gzip后大小只有20K+
      Vue.js更容易上手,学习曲线平稳
      吸取两家之长,借鉴了angular的指令和React的组件化

    • 数据驱动


      数据驱动

      Vue.js通过Directives指令对DOM做一层封装,当数据发生改变,会通知指令去修改对应的DOM,数据驱动DOM变化,DOM是数据的一种自然映射;Vue.js还会对操作做一些监听,当修改视图时,Vue.js监听到这些变化,从而改变数据,形成了数据的双向绑定。

    • 数据响应原理


      数据响应原理
    • 组件化
      扩展HTML元素,封装可重用的代码

    • 组件设计原则
      页面上每个独立的可视、可交互区域视为一个组件
      每个组件对应一个工程目录,组件所需的各种资源在这个目录下就近维护
      页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面

    更多Vue基础知识可以参考慕课网wiki:Vue.js 教程

    2.准备工作

    2.1 Vue CLI

      Vue的脚手架工具,帮助我们写好Vue.js基础代码的工具,能帮我们搞定目录结构、本地调试、代码部署、热加载、单元测试等工作。
      文档地址:Vue CLI 中文文档

    • 安装Vue CLI(3.0以上版本)
    #前提是已安装了node,查看node版本,确认已安装node,如未安装,自行百度
    node -v
    
    #安装Vue CLI (Mac系统安装操作涉及权限,需要在前面加sudo,下同)
    npm install -g @vue/cli
    # OR
    yarn global add @vue/cli
    
    #运行这个命令查看版本,验证是否安装成功
    vue --version
    
    • 创建一个项目
    #运行以下命令来创建一个新项目eleme-vue-cube
    vue create eleme-vue-cube
    
    创建项目
    • 启动项目
    #进入目录
    cd eleme-vue-cube
    #启动项目
    npm run serve
    
    • 项目文件介绍
    |-- eleme-vue-cube
        |-- .browserslistrc
        |-- .editorconfig
        |-- .eslintrc.js
        |-- .gitignore           //指定文件无需提交到git上
        |-- README.md
        |-- babel.config.js      //使用一些预设
        |-- package-lock.json    //版本管理使用的文件
        |-- package.json         //项目描述及依赖
        |-- postcss.config.js
        |-- node_modules         //项目依赖(对webpack进行了封装)
            |-- ...
        |-- public
        |   |-- favicon.ico      //网站图标
        |   |-- index.html       //入口html文件
        |-- src                  //项目源码
            |-- App.vue
            |-- main.js          //入口js文件
            |-- assets
                |-- logo.png
            |-- components
                |-- HelloWorld.vue
    
    • webpack打包


      webpack

    详细了解请参阅:webpack中文文档

    2.2 cube-ui

    • 安装cube-ui
      在vue-cli3.0的项目里,直接使用 vue add cube-ui 就可以安装; 安装cube-ui
      后编译(post-compile):不去使用cube-ui编译后的代码,直接引用它的源码,用我们的应用去编译这块儿代码;好处是可以减少整个构建包的体积.
      官方文档地址:cube-ui中文文档Cube-UI中文文档

    2.3 api接口mock

    通过data.json文件模拟后台数据

    //向vue.config.js中添加:
    // 1.引入data.json文件(在项目根目录),获取对应的数据
    const appData = require('./data.json')
    const seller = appData.seller
    const goods = appData.goods
    const ratings = appData.ratings
    
    //2.module.exports = {}中添加devServer
    devServer: {
        before (app) {
          app.get('/api/seller', function (req, res) {
            res.json({
              errno: 0,
              data: seller
            })
          })
          app.get('/api/goods', function (req, res) {
            res.json({
              errno: 0,
              data: goods
            })
          })
          app.get('/api/ratings', function (req, res) {
            res.json({
              errno: 0,
              data: ratings
            })
          })
        }
    }
    

      devServer表示本地服务器,里面有个before方法,参数是app,可以在这里面定义接口,例如里面定义的app.get('/api/seller',启动服务后,用浏览器访问http://localhost:8080/api/seller,可以在页面看到接口返回的json数据。

    2.4 项目资源准备

    • 1.删除了原来项目的src/assert目录、删除了HelloWorld.vue
    • 2.public/index.html 修改,锁定禁止缩放(maximum-scale=1.0,minimum-scale=1.0,user-scalable=no)
    • 3.新建src/common目录 用于存放资源
    • 4.新建src/common/fonts 存放图标字体相关文件
    • 5.新建src/common/stylus 存放base.styl(定义的基础样式),icon.styl(字体图标的一些样式 引用了fonts下面的文件),index.styl(内部import icon和base),mixin.styl(引用到cube-ui中的styl),variable.styl(引用了cube-ui的变量 并定义背景色和主题色)
        //修改后项目路径src下
        |-- src                  //项目源码
            |-- App.vue
            |-- main.js          //入口js文件
            |-- common           //公共资源
                |-- fonts        //字体图标相关文件
                |-- stylus      //样式
            |-- components
        //common文件夹及源码地址见文末
    

    4.组件开发

    html和css部分暂不详述

    4.0 组件注册

      项目中使用了Babel 和 webpack 的模块系统的情况下,Vue官方推荐我们创建一个 components 目录,并将每个组件放置在其各自的文件中。
      然后你需要在局部注册之前导入每个你想使用的组件。例如,在一个假设的 ComponentB.js 或 ComponentB.vue 文件中:

    import ComponentA from './ComponentA'
    import ComponentC from './ComponentC'
    
    export default {
      components: {
        ComponentA,
        ComponentC
      },
      // ...
    }
    

      现在 ComponentA 和 ComponentC 都可以在 ComponentB 的模板中使用了。
      更多组件注册方式,可查看文档:组件注册-Vue.js

    4.1 头部组件相关技术点

    4.1.1 axios

      请求数据使用了axios(类似ajax),一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。github地址:axios/axios,中文文档地址:翻译比较到位的axios中文文档

    4.1.2 create-api

      点击弹出弹窗层,使用了create-api,一个能够让 Vue 组件通过 API 方式调用的插件。
      使用方法:先注册后使用。文档地址:Cube-UI中文文档 create-api 模块

    4.2 Tab组件(另行补充)

    4.3 商品页面(另行补充)

    4.4 商品详情(另行补充)

    4.5 评价和商家页面(另行补充)

    5.打包部署

      使用命令 npm run build 编译,生成dist文件夹;将整个项目文件上传到阿里云,进入项目根路径下,执行 nohup node prod.server.js &,后台启动。

    [root@pliuServer eleme-vue-cube]# nohup node prod.server.js &
    [1] 13688
    [root@pliuServer eleme-vue-cube]# nohup: ignoring input and appending output to ‘nohup.out’
    

    写在最后:
      本人毕竟是一个Java后端,由于时间关系,有些地方没有深入,后续会再次补充;代码已上传至码云仓库,点击可查看完整代码
      感谢慕课网ustbhuangyi老师的课程:Vue.js2.5+cube-ui重构饿了么App,受益匪浅。

    相关文章

      网友评论

          本文标题:Vue.js + cube-ui 高仿饿了么 App 项目学习笔

          本文链接:https://www.haomeiwen.com/subject/rexlwctx.html