vue项目实战:实战技巧总结(上)

简介: vue项目实战:实战技巧总结

一、创建项目及配置


1.1 vue cli2 创建项目

vue init webpack project
npm install
npm run dev

1.2 vue cli3 创建项目

 vue create project

选择配置,看个人项目需求

TypeScript 支持使用 TypeScript 书写源码
 Progressive Web App (PWA) Support PWA 支持。
 Router 支持 vue-router 。
 Vuex 支持 vuex 。
 CSS Pre-processors 支持 CSS 预处理器。
 Linter / Formatter 支持代码风格检查和格式化。
 Unit Testing 支持单元测试。
 E2E Testing 支持 E2E 测试。

进入到项目根目录

 cd  project

启动项目

 npm run serve

二、安装 element-UI


npm i element-ui -S

2.1main.js 引入


2.1.1 全局引入

import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Element)

2.1.2 按需引入


首先,安装 babel-plugin-component

npm install babel-plugin-component -D

然后,将 .babelrc 修改为:

{
  "presets": [
    ["es2015", {
      "modules": false
    }]
  ],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-chalk"
      }
    ]
  ]
}

接下来,如果你只希望引入部分组件,比如 ButtonSelect,那么需要在 main.js 中写入以下内容:

import Vue from 'vue';
import { Button, Select } from 'element-ui';
import App from './App.vue';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);

或写为

- Vue.use(Button)
- Vue.use(Select)

三、安装 vuex


npm i vuex -s

3.1 /src/store 下面的 index.js 中

import Vue from 'vue'
import Vuex from 'vuex'

//挂载 Vuex
Vue.use(Vuex)

//创建 VueX 对象
const store = new Vuex.Store({
state:{name: 'helloVueX',
},
mutations:{},
actions:{},
modules:{}
})

export default store

3.2 main.js 引入


store 挂载到当前项目的 Vue 实例当中去

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
el: '#app',
router,
store, //store:store 和 router 一样,将我们创建的 Vuex 实例挂载到这个 vue 实例中
render: h => h(App)
})

3.3 在组件中使用 Vuex

<template>
    <div id='app'>
      name:
      <h1>{{ $store.state.name }}</h1>
    </div>
</template>

methods:{
  add(){
      console.log(this.\$store.state.name)
    }
},

更具体的学习文档参考我的网站:
学习文档


四、配置scss环境


4.1.首先安装依赖

npm install node-sass sass-loader --save-dev

4.2.找到 build 中 webpack.base.conf.js,在 rules 中添加 scss 规则

{
  test: /\.scss\$/,
  loaders: ['style', 'css', 'sass']
}

4.3.在 vue 文件中使用

<style lang='scss'>
  
</style>

4.4 在 vue 项目全局中引入 scss


1.全局引用时需要安装 sass-resources-loader
npm install sass-resources-loader --save-dev
2.修改 build 中的 utils.js


scss: generateLoaders('sass')


修改为
scss: generateLoaders('sass').concat({
  loader: 'sass-resources-loader',
  options: {
    //你自己的 scss 全局文件的路径
    resources: path.resolve(\_\ _dirname, '../src/style/common.scss')
  }
})

如果上面的不能正常编译

//配置 sass 编译路径

function generateSassResourceLoader() {
  let loaders = [
    cssLoader,
    'sass-loader',
    {
      loader: 'sass-resources-loader',
      options: {
        // 多个文件时用数组的形式传入,单个文件时可以直接使用 path.resolve(__dirname, '../static/style/common.scss'
        resources: path.resolve(__dirname, '../src/style/common.scss')
      }
    }
  ];
  if (options.extract) {
    return ExtractTextPlugin.extract({
      use: loaders,
      fallback: 'vue-style-loader'
    });
  } else {
    return ['vue-style-loader'].concat(loaders);
  }
}
在 cssLoaders 里面引入
sass:generateSassResourceLoader(),//新加的
scss:generateSassResourceLoader(),//新加的

4.5 引入全局的 sass

npm install --s node-sass sass-loader

1.首先你需要

npm install --s sass-resources-loader

2.在 build 目录下找到 utils.js 文件

Module build failed: TypeError: this.getResolve is not a function at Object.loader

安装 node-sass 运行报错
vue 安装 node-sass 编译报错
安装node-scss报错
安装 node-scss 报错


在搭建 vue 脚手架 或者是在 vue 项目中,想使用 sass 的功能,

npm install node-sass --save-dev //安装 node-sass
npm install sass-loader --save-dev //安装 sass-loader
npm install style-loader --save-dev //安装 style-loader

这是因为当前 sass 的版本太高,webpack 编译时出现了错误,这个时候只需要换成低版本的就行,下面说一下修改方法,很简单,如下,找到 package.json 文件,里面的 "sass-loader"的版本更换掉 就行了。

将 "sass-loader": "^8.0.0",更换成了 "sass-loader": "^7.3.1",

也可以先卸载当前版本,然后安装指定的版本


卸载当前版本
npm uninstall sass-loader
安装
npm install sass-loader@7.3.1 --save-dev

五、配置less环境



安装 lessless-loader
npm install less less-loader --save

修改 webpack.base.config.js 文件,配置 loader 加载依赖,让其支持外部的 less,在原来的代码上添加

// 此种方法在控制台中标签样式显示的是style标签样式
{
  test: /\.less$/,
  loader: "style-loader!css-loader!less-loader",
}
// 可以在控制台中看到当前标签样式来自于哪个less文件
{
  test: /\.less$/,
  loader: "style-loader!css-loader!less-loader",
  options: {
    sourceMap: true
  }
}

在 vue 文件中的 style 标签中添加 lang="less"即可在标签中使用 less,或者外部引入 less


参考文档


六、引入font-awesome


npm install font-awesome --save

然后在 main.js 引入 font-awesome/css/font-awesome.min.css 即可。


7、vue 配置网站的 ico


7.1方式一:

<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />

7.2 方式二

webpack.dev.conf.js
new HtmlWebpackPlugin({
    filename: 'index.html',
    template: 'index.html',
    favicon: 'favicon.ico', // 新增
    inject: true
  }),

  webpack.prod.conf.js
new HtmlWebpackPlugin({
  filename: config.build.index,
  template: 'index.html',
  inject: true,
  minify: {
    removeComments: true,
    collapseWhitespace: true,
    removeAttributeQuotes: true
    // more options:
    // https://github.com/kangax/html-minifier#options-quick-reference
  },
  // necessary to consistently work with multiple chunks via CommonsChunkPlugin
  chunksSortMode: 'dependency',
  favicon: 'favicon.ico' // 新增
}),

八、引入自定义公共样式


router/index.js 里面引入公共样式

import 'bootstrap/dist/css/bootstrap.css' //引入 bootstrap
import 'bootstrap-vue/dist/bootstrap-vue.css'
import '@/common/common.css'
import '@/common/index.css'

九、路由按需加载


const port = () => import('@/pages/port') //入口页面、
const router = new Router({
  // mode: 'history',
  routes: [
    {
      path: '/',
      name: 'port',
      component: resolve => require.ensure([], () => resolve(require('@/pages/port')), 'port'),
    }]
})

参考文档


十、全局自定义方法


main.js 里面挂载方法到 vue.prototype
Vue.prototype.isMobile = function() {
  let flag = navigator.userAgent.match(
    /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
  )
  return flag;
}
组件里面使用
mounted: function() {
  this.isMobile();
}

vue项目实战:实战技巧总结(中):https://developer.aliyun.com/article/1483355

相关文章
|
14天前
|
数据采集 缓存 编解码
vue项目实战:实战技巧总结(下)
vue项目实战:实战技巧总结
49 0
|
14天前
|
缓存 JavaScript 前端开发
vue项目实战:实战技巧总结(中)
vue项目实战:实战技巧总结
67 1
|
3月前
|
移动开发 小程序 前端开发
Uniapp Vue3 基础到实战 教学视频
Uniapp Vue3 基础到实战 教学视频
126 0
|
6月前
|
存储 JavaScript 前端开发
Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目
Vue2+Vue3基础入门到实战项目(前接六 副线一)—— 面经 项目
31 0
|
8月前
vue3课程笔记-组件化开发
vue3课程笔记-组件化开发
|
8月前
|
JavaScript 前端开发
【Vue2从入门到精通】认识Vue组件化,这篇文章就够了
当我们在构建Vue应用程序时,组件化是一个非常重要的概念。Vue组件化将应用程序划分为更小、更可重用的部分,从而使应用程序更易于维护、测试和扩展。
|
9月前
|
设计模式 开发框架 JavaScript
了解Vue框架的大致学习方向(第一课)(一)
了解Vue框架的大致学习方向(第一课)(一)
53 0
|
9月前
|
JSON JavaScript 前端开发
了解Vue框架的大致学习方向(第一课)(二)
了解Vue框架的大致学习方向(第一课)(二)
39 0
|
JavaScript 前端开发 API

热门文章

最新文章