Vuejs的VueTool工具开启失败解决方案

JavaScript017

Vuejs的VueTool工具开启失败解决方案,第1张

有时候我们明明打开了devtool设置为true,并按chrome上安装了vueTool后,发现还是没有在控制台里显示vue的tool等问题

1、如果是没有安装vueTool,可以到chrome的扩展里面选择并安装

如果是没有科学上W的话可以github上手动down下仓库来安装

然后就是扩展Chrome插件

打开Chrome浏览器 >选择更多工具>扩展程序>打开开发者模式

点击加载已解压的扩展程序, 找到刚才生成的chrome文件夹,选择 vue-devtools >shells >chrome 放入, 安装成功如上面的图1

下方是可能可以看到vueTool了,但是在控制台就是出不来的情况

2、检查下vue.config.js的devtool是否打开,默认是true,看看是不是在非生产环境也设置为false了

3、检查看看是否有手动启用CDN加速Vuejs的文件,按官网说的,我们开发环境也需要使用开发版本的vuejs,否则很多警告就会不生效,比如props的校验器等

检查public.html的vuejs引用(如果是按脚手架的则无需关注)

确认以上问题以后,我们重新安装依赖并且重新跑脚手架编译。

vue-cli

自从node的兴起,前端项目中就开始出现各种预处理工具,当我们开始一个新项目时,我们都会先编写一些预处理文件,和构建项目目录。

而vue-cli就是为了做这方面工作的,生成一套提前定义好的构建文件,和相应的文件。

vue-cli有5个对应的项目结构。我们使用的是vue-webpack-boilerplate。

$ npm install -g vue-cli

$ vue init webpack my-project

$ cd my-project

$ npm install

$ npm run dev

执行上面命令后,我们将生成下面的文件结构,并开一个服务,你可以打开http://localhost:8080看看。

具体的使用建议看文档。

项目结构

如果你之前就了解vue和vue-router,可以先看这部分。如果你了解vue不了解vue-router,可以先看这篇文章vue-router。如果你连vue都不是很理解我建议,抽5个小时左右把文档教程过一遍。

你可以看到项目根目录下面有一个html,仅有的一个html。

上图的结构是我自己琢磨的,主要是结合vue-router、vuex两使用方法来考虑的。另外对于组件的复用,将一些功能组件和全局组件都放在根部,通过vuex来控制组件属性实现一些功能。

下面我就结构由上至下的介绍。

main.js

main.js 是我们的入口文件,主要作用是初始化vue实例并使用需要的插件。

import Vue from 'vue'

import App from './App'

import VueRouter from 'vue-router'

import VueResource from 'vue-resource'

import filter from './filter'

import store from './vuex/store'

import { sync } from 'vuex-router-sync'

import { configRouter } from './config_router'

import resourceGlobalSet from './resource_set'

 

Vue.use(VueResource)

Vue.use(VueRouter)

// 初始化自定义过滤器

Vue.use(filter)

 

const router = new VueRouter({

history: true,

saveScrollPosition: true

})

configRouter(router)

Vue.http.options.emulateJSON = true

Vue.http.interceptors.push(resourceGlobalSet) // ajax 拦截

 

sync(store, router)

router.start(App, 'app')

就如同上面所示,主要是使用和配置相应插件,并初始化一个vue,上面的初始化在router.start(App, 'app'),是以App.vue为组要组件,并以html中的为挂载替换点。

APP.vue

App.vue是我们的主组件,所有页面都是在App.vue下进行切换的。其实你也可以理解为所有的路由也是App.vue的子组件。所以我将router标示为App.vue的子组件。

下面是App.vue的template

<template>

    <div id="app">

        <cn-header></cn-header>

        <sidebar></sidebar>

        <router-view></router-view>

        <tip></tip>

        <loading></loading>

    </div>

</template>

你可以看到route-view和其它全局功能组件,全局组件在一个层级。

另外由于APP.vue在所有页面都有,我们将会在APP.vue上面写一些初始化全局方法。

router

router 是具体的业务组件,比如index,login,content等组件都是具体业务相关的。下面就是再和业务相关的组件。

全局组件

全局组件是页面共用的部分,比如header,footer,navbar,你可能在想如果我有一些header是独特的怎么办,这种情况下可以通过路由做判断,渲染不同的html,如果判断条件不是路由,也可以在vuex写一个store记录组件的state。

功能组件

功能组件是比如dialog,tip等组件,使用来与用户交互的。

通常情况下,功能组件是各个组件都需要的一些组件。在一个页面里如果有两个组件,两个组件都同时引了一个tip组件作为子组件是纯在的。为了避免这种情况,我们将功能组件提到App.vue然后通过vuex进行组件交互,从而就讲一个功能组件变成了全局方法。

自定义插件

vue还能自己写插件。对于一些公用的方法和逻辑,我们可以提出来写在插件里面。