从零开始搭建vue.js项目

简介: 搭建项目初始化项目$ npm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init webpack paascloud...

搭建项目

初始化项目

$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack paascloud-paas-web
# 安装依赖,走你
$ cd paascloud-paas-web
$ npm install
$ npm run dev

添加各种需要依赖的组件

λ cnpm install -S axios
λ cnpm install -S crypto-js
λ cnpm install -S echarts
λ cnpm install -S element-ui
λ cnpm install -S font-awesome
λ cnpm install -S js-cookie
λ cnpm install -S node-sass
λ cnpm install -S nprogress
λ cnpm install -S qs
λ cnpm install -S sass-loader
λ cnpm install -S store.js
λ cnpm install -S vuex
λ cnpm install -S lockr
λ cnpm install -S vue-awesome-swiper
λ cnpm install -S vue-infinite-scroll
λ cnpm install -S vue-lazyload

设置ESLINT

$  vi .editorconfig
indent_size = 4
$  vi .eslintrc.js
globals: {
    "$": true
},
'rules': {
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
      'semi' : ['error','always'],
      'indent': [2, 4, { 'SwitchCase': 1 }],
      'space-before-function-paren': 0,
      '$': 0 // 0关闭 1警告 2错误
  }
  注意 这里需要修改src 下的文件以分号结尾
  src/App.vue
  src/router/index.js
  src/components/Hello.vue
  src/main.js

安装项目所需依赖

$ cnpm install
没有cnpm的小伙伴建议安装一下cnpm https://npm.taobao.org/
$ npm install -g cnpm --registry=https://registry.npm.taobao.org

建议 先创建 node_modules 这个文件夹 然后添加到excluded选项下 否则webstorm构建项目容易卡死

webpack.base.conf.js

'src': resolve('src'),
      'assets': resolve('src/assets'),
      'components': resolve('src/components'),
      'views': resolve('src/views'),
      'store': resolve('src/store'),
      'mixins': resolve('src/mixins'),
      'util': resolve('src/util'),
      'filters': resolve('src/filters')

启动项目

$ npm run dev
访问 http://localhost:8080/ 看见久违的Hello World 项目第一步 搭建成功

集成所需插件

引入 Element

完整引入

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import App from './App.vue'

Vue.use(ElementUI)

new Vue({
  el: '#app',
  render: h => h(App)
})

按需引入

首先,安装 babel-plugin-component:

$ npm install babel-plugin-component -D

然后,将 .babelrc 修改为

"plugins": [["component", [
    {
        "libraryName": "element-ui",
        "styleLibraryName": "theme-default"
    }
]], "transform-runtime"],

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

import {
  Input,
  Dialog,
  Button,
  Form,
  formItem,
  MessageBox,
  Message
} from 'element-ui';
const components = [
  Input,
  Dialog,
  Button,
  Form,
  formItem
];
components.map(component => {
  Vue.component(component.name, component);
});
Vue.prototype.$pcMessageBox = MessageBox;
Vue.prototype.$pcMessage = Message;
Vue.prototype.$confirm = MessageBox.confirm;

引入 vue-router

需要在 main.js 中写入以下内容:

import routes from './router';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
# 传统的url方式
const router = new VueRouter({
    mode: 'history',
    root: '/',
    routes
});
router.beforeEach((to, from, next) => {
    if (to.meta.requestAuth) {
        if (PcCookie.get(enums.USER.LOGIN_NAME)) {
            next();
        } else {
            next({
                path: '/login'
            });
        }
    } else {
        // NProgress.start();
        next();
    }
});
router.afterEach(transition => {
    // NProgress.done();
});

然后修改 src/router/index.js

import Hello from '@/components/Hello';
export default [
  {
    path: '/',
    name: 'Hello',
    component: Hello
  }
];

引入 axios

需要在 main.js 中写入以下内容:

这里写代码片

引入 NProgress

需要在 main.js 中写入以下内容:

import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
Vue.prototype.$pcNProgress = NProgress;

引入 axios

需要在 main.js 中写入以下内容:

import axios from 'axios';
Vue.prototype.$http = axios.create({
    timeout: 2000
});
Vue.prototype.$http.interceptors.request.use((config) => {
    let authToken = PcCookie.get(enums.USER.AUTH_TOKEN);
    config.headers.Authorization = authToken;
    return config;
}, (error) => {
    return Promise.reject(error);
});

Vue.prototype.$http.interceptors.response.use((res) => {
    if (res.data.code !== 200) {
            window.location.href = '/';
            return Promise.reject(res);
        }
    } else {
        if (res.data) {
            return res.data;
        }
    }
}, (error) => {
    if (error.response) {
        console.error('error: ', error.response);
        if (error.response.status === 500) {
            alert(error.response.data.message);
        } else if (error.response.status === 504) {
            alert('网关错误');
        } else {
            console.log('Error', error.message);
            alert('接口请求失败或超时!请刷新重试');
        }
    } else {
        alert('接口请求失败或超时!请刷新重试');
    }
    return Promise.reject();
});

引入 vuex

需要在 src mkdir store main.js 中写入以下内容:

import Vuex from 'vuex';
import store from './store/';
Vue.use(Vuex);
new Vue({
    el: '#app',
    router,
    store,
    template: '<App/>',
    components: {App}
});

引入 vue-lazyload

需要在 main.js 中写入以下内容:

import VueLazyload from 'vue-lazyload';
Vue.use(VueLazyload, {
    loading: 'static/loading-svg/loading-bars.svg',
    try: 3 // default 1
});

引入 vue-infinite-scroll

需要在 main.js 中写入以下内容:

import 'font-awesome/css/font-awesome.css';

引入 font-awesome

需要在 main.js 中写入以下内容:

import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
Vue.prototype.$pcNProgress = NProgress;

引入 vue-awesome-swiper

需要在 main.js 中写入以下内容:

import VueAwesomeSwiper from 'vue-awesome-swiper';
Vue.use(VueAwesomeSwiper);

引入 mixins

需要在 src mkdir mixins main.js 中写入以下内容:

import Mixin from './mixins';
Vue.mixin(Mixin);

引入 vueBus

需要在 mkdir src/vueBus.js

import Vue from 'vue';
export default new Vue();

然后在main.js 中写入以下内容:

import Bus from 'src/vueBus';
Vue.prototype.$pcBus = Bus;

引入 全局过滤器 filters

需要在 mkdir src/filters main.js 中写入以下内容:

import filters from './filters';
Object.keys(filters).forEach(k => Vue.filter(k, filters[k]));

引入 NProgress

需要在 main.js 中写入以下内容:

import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
Vue.prototype.$pcNProgress = NProgress;
目录
相关文章
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
474 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
6月前
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
257 0
|
8月前
|
JavaScript 安全 前端开发
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
284 3
|
10月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
370 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
10月前
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
505 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
10月前
|
SQL JavaScript 安全
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
425 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
|
10月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
454 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
9月前
|
资源调度 JavaScript 前端开发
Pinia 如何在 Vue 3 项目中进行安装和配置?
Pinia 如何在 Vue 3 项目中进行安装和配置?
676 4
|
10月前
|
监控 JavaScript 前端开发
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
616 12
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。