Vue项目开发流程(自用)

一、配置开发环境

1.1 安装Node.js

  npm集成在Node中,检查是否安装完成:node -v

1.2 安装cnpm(淘宝镜像)

  npm install -g cnpm,检查安装是否完成:cnpm -v

1.3 安装Vue脚手架

  cnpm install -g vue-cli

1.4 项目初始化

  vue init webpack vue-project

二、明确目录结构

├── README.md                 项目介绍
├── index.html                入口页面
├── build                     构建脚本目录
│  ├── build-server.js        运行本地构建服务器,可以访问构建后的页面
│  ├── build.js               生产环境构建脚本
│  ├── dev-client.js          开发服务器热重载脚本,主要用来实现开发阶段的页面自动刷新
│  ├── dev-server.js          运行本地开发服务器
│  ├── utils.js               构建相关工具方法
│  ├── webpack.base.conf.js   wabpack基础配置
│  ├── webpack.dev.conf.js    wabpack开发环境配置
│  └── webpack.prod.conf.js   wabpack生产环境配置
├── config                    项目配置
│  ├── dev.env.js             开发环境变量
│  ├── index.js               项目配置文件
│  ├── prod.env.js            生产环境变量
│  └── test.env.js            测试环境变量
├── mock                      mock数据目录
│  └── hello.js   
├── package.json              npm包配置文件,里面定义了项目的npm脚本,依赖包等信息
├── src                       源码目录  
│  ├── main.js                入口js文件
│  ├── app.vue                根组件
│  ├── components             公共组件目录
│  │  └── title.vue
│  ├── assets                 资源目录,这里的资源会被wabpack构建
│  │  └── images    
│  │    └── logo.png    
│  ├── router                 前端路由
│  │  └── index.js    
│  └── views                  页面目录(新建文件夹)
│    ├── components           页面组件
│    ├── hello.vue            页面
│    └── notfound.vue   
├── static                    纯静态资源,不会被wabpack构建。
└── test                      测试文件目录(unit&e2e)
  └── unit                    单元测试
    ├── index.js              入口脚本
    ├── karma.conf.js         karma配置文件
    └── specs                 单测case目录
      └── Hello.spec.js 

三、安装依赖(根据项目所需补充)

3.1 在组件中使用less

  安装:cnpm i --save-dev less less-loader style-loader

3.2 使用方式:

<style lang="less" scoped>
//外部导入(也可以直接编写less)
@import url("../assets/less/index.less");
</style>

四、引入插件(以bootstrap为例)

4.1 直接在入口页面index.html中引入,文件存放在static静态资源文件夹(避免了jquery和bootstrap文件引入先后问题)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <script src="./static/js/jquery.min.js"></script>
    <script src="./static/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="./static/css/bootstrap.min.css">
    <title>vue实例</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

五、使用axios获取数据

5.1 安装axios

  cnpm i --save-dev axios

5.2 配置config/index.js(可以解决跨域问题)

proxyTable: {
      '/api': {
        target: 'https://api.douban.com',//设置你调用的接口域名和端口号
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'https://api.douban.com/user/add',直接写‘/api/user/add’即可
        }
      }
    }

5.3 调用

5.3.1 在需要使用http请求的页面导入

import axios from 'axios'

5.3.2 get请求:

export default {
  name: "index",
  data() {
    return {
      info: null
    };
  },
  methods: {
    getData() {
      axios
        .get("/api/v2/movie/in_theaters")
        .then(res=> {
          this.info = res.data;
        })
        .catch(err=> {
          console.log(err);
        });
    }
  }
};

5.3.3 post请求(示例,找不到post开放接口):

export default {
  name: "index",
  props: [],
  data() {
    return {
      info: null
    };
  },
  methods: {
    getData() {
      axios
        .post("/api/v2/movie/in_theaters",{
          params: {//传参
            page: 1,
            count: 20
          }
        })
        .then(res=> {
          this.info = res.data;
        })
        .catch(err=> {
          console.log(err);
        });
    }
  }
};

六、Vue文件导入

配置build/webpack.base.conf.js,添加匹配规则:

{
    test: /\.vue$/,
    loader: 'vue-loader',
    options: vueLoaderConfig
}

持续更新。。。。。

猜你喜欢

转载自www.cnblogs.com/zgdawdl/p/10509057.html