Table of Contents
Preface
Why choose VUE
Why the beauty pageant takes out food
Technology Stack
Reference code
Why use VW layout and 2X3X diagram
About the design draft
Directory structure
Home Web Front-end JS Tutorial The project development process of vue2 imitating Meituan takeout

The project development process of vue2 imitating Meituan takeout

Jul 25, 2018 am 11:10 AM
chrome html html5 javascript

The content shared with you in this article is about the project development process of vue2 imitating Meituan takeout. The content is very detailed. Next, let’s take a look at the specific content. I hope it can help everyone.

Preface

Many beginners, especially when a company like mine has one and only one front-end, bite the bullet and learn a new framework without anyone around to help. If you have any questions, you can only turn to Sifu, Baidu, and Google. Click on my profile picture to see my questions. You will know that it is really tiring for Vue newbies to learn Vue. When searching online, all I found were simple demos. The projects on the teaching website were also simple single pages or slightly more than a few pages. It's okay for a novice like me to get started, but it's still far from enough to get started with production development. So I tried to write a hand-training project. I didn’t know how many specific pages there were, and I didn’t know how many technologies were used. In short, I developed whatever I thought of, and I would come back to check for omissions and fill in the gaps. I will try my best to have comments on every sentence of the code inside. I hope that the big guys will give me some advice after reading it. Point out the error.

Why choose VUE

1 The learning curve is smooth, and it is not as difficult to learn as NG and react.
2 I think the two-way data binding method of setget is very clever.
3 I am a fan of You Yuxi.

Why the beauty pageant takes out food

The Meituan takeout project can probably be designed. Most VUE technical points (excluding server-side rendering) are enough for practice. Of course, real takeout development requires much more than these. My goal is just to complete a rough framework. Used as an exercise.
On weekdays, I always use Meituan when ordering takeout. If you have used it a lot, you may be familiar with Meituan Takeout. emmmm I just like Meituan Takeout==

Technology Stack

Actually, I don’t know what I will use. It is an extension based on vuecli and I will come back and modify it if I add it later
vue2 vuex vue-router axios webpack ES6 flex stylus vw svg

Reference code

The page code style and implementation method refer to vue-admin (I learned this when getting started with vue) )

Why use VW layout and 2X3X diagram

People are always moving forward, how can we make progress if we don’t try new things. I think VW is very easy to use, so I use it. For personal practice, I don’t think about the issues of adaptation and compatibility. I just use it if I like it.
How to use VW in vue, and solutions such as 1px equal proportions, you can click here
2X3X picture I chose the direct 3X picture==I am lazy. Sorry

About the design draft

==I took a screenshot on my mobile phone and sent it to the emmmm I designed on my computer. It’s so rough

Directory structure

├── build                      // 构建相关
├── config                     // 配置相关
├── src                        // 源代码
│   ├── api                    // 所有请求
│   ├── assets                 // 静态资源
│   ├── components             // 全局公用组件
│   ├── router                 // 路由
│   ├── store                  // 全局 store管理
│   ├── utils                  // 全局公用方法
│   ├── pages                  // 页面
│   ├── App.vue                // 入口页面               
│   └── main.js                // 入口文件 
├── static                     // 未用到 
├── .babelrc                   // babel-loader 配置
├── .eslintrc.js               // eslint 配置项
├── .gitignore                 // git 忽略项
├── index.html                 // html模板
├── .postcssrc                 // postcss配置地址
└── package.json               // package.json
Copy after login

The first day today I only had half of the scaffolding up for the project. The route has not been written yet. Considering that the first page needs to use the store. So I first wrote the store
Involving two folders

├── api                                     
│   └── login.js
├── utils
│   └── request.js    
├── store
├── ├── modules    
│   │     └── user.js  
├── ├── getters.js
│   └── index.js
Copy after login

Main code

import { loginByUsername, logout, loginByMobile } from '@/api/login'
import Cookies from 'js-cookie'

const emptyuser = {
  userId: '', // 用户ID
  name: '', // 用户名
  avatar: '', // 用户头像
  hasaccount: '', // 是否有账号密码,可能有手机号验证码直接登录未设置账号密码
  mobile: '', // 手机号
  wx: ''// 是否绑定微信号
}
const user = {
  userinfo: Cookies.get('userinfo') || {
    userId: '', // 用户ID
    name: '', // 用户名
    avatar: '', // 用户头像
    hasaccount: '', // 是否有账号密码,可能有手机号验证码直接登录未设置账号密码
    mobile: '', // 手机号
    wx: ''// 是否绑定微信号
  },
  mutations: {
    SET_USERINFO: (state, code) => {
      state.userinfo = {...code}
      // 修改对象或者数组的时候养成用展开运算符的习惯
    }
  },
  actions: {
    // 用户名登录
    LoginByUsername ({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        loginByUsername(userInfo.username, userInfo.password).then(response => {
          const data = response.data
          commit('SET_USERINFO', data.userinfo)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },
    LoginByMobile ({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        loginByMobile(userInfo.mobile, userInfo.code).then(response => {
          const data = response.data
          commit('SET_USERINFO', data.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },
    // 登出
    LogOut ({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.userId).then(() => {
          commit('SET_USERINFO', emptyuser)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    }
  }
}

export default user
Copy after login

vue’s store is much simpler than redux.
is divided into four parts.
state: A single state machine. All data that needs to be shared on each page is stored here. It is not as good as the user information in the above code.
getters: Get the corresponding state in the state machine. (Check)
mutations: Develop rules for modifying data.
Action: Modify data to match mutations, asynchronous operations are placed here.

Related recommendations:

How to unify the interface management of Vue and axios

How do sub-components in Vue obtain the value of the parent component? (props implementation)

The above is the detailed content of The project development process of vue2 imitating Meituan takeout. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles