vue项目查看vue版本及cli版本的实现方式

 更新时间:2020年10月24日 15:04:03   作者:l244112311  
这篇文章主要介绍了vue项目查看vue版本及cli版本的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

查看cli版本,执行如下:

vue -V

查看vue版本

npm list vue

补充知识:vue老项目升级vue-cli3.0问题总结

升级步骤

1、 删除原vue-cli并安装vue-cli3.0

2、删除新项目中src下的内容,把原项目中src目录覆盖到新项目中

3、把router从目录文件夹改为文件,src/router/index.js提高一层变成src/router.js

4、 我的项目中src已经分为了views和components所以无需修改,如果不是这个结构需要自己区分下

5、将原项目的index.html及favicon.ico覆盖到新项目的public中

6、 将原项目的static文件夹拷贝到新项目的public中

7、 修改package.json文件,保持和原有项目一致即可

8、 创建并配置vue.config.js文件

删除命令:

npm uninstall vue-cli -g

安装@vue/cli命令:

npm install -g @vue/cli

我在这里省略安装流程,掘金上已经有很多文章了,下面说下会遇到的问题:

1、找不到vue文件

CMD中的报错

These dependencies were not found:

* @/views/index/index in ./src/router.js

* @/views/index/otherIndex in ./src/router.js

To install them, you can run: npm install --save @/views/index/index @/views/index/other

页面上的报错

./src/router.js
Module not found:
Error: Can't resolve '@/views/index/index' in 'D:\VUE\haigui-proxy\src'
这种报错是说明文件路径错误没有找到文件,因为在原项目中设置了“@”也就是alias(别名),也有可能在原项目中设置了extensions(可以省略扩展名),所以需要在新项目的vue.config.js中设置如下内容:
const path = require('path'); // vue.config.js顶部
const resolve = (dir) => path.join(__dirname, dir);
module.exports = {
 configureWebpack: config => {
 Object.assign(config, {
  resolve: {
  extensions: ['.js', '.vue', '.json'], // 可以省略后缀名
  alias: { // 别名,在require的时候,可以使用这些别名,来缩短路径的长度
   '@': path.resolve(__dirname, './src'),
   '@c': path.resolve(__dirname, './src/components')
  }
  }
 });
 }
}

2、找不到image图片

Module not found:

Error: Can't resolve '../../../static/image/avatar_gray.jpg' in 'D:\VUE\haigui-proxy\src\views\index'

当把原项目的src和static拷贝到新项目后,就会出现图片路径不对的问题,网上很多有关vue-cli3.0配置的文章都说的是把原项目的static直接拷贝到新项目的public中,其实这是不对,官方给出的原因是:

任何放置在 public 文件夹的静态资源都会被简单的复制,而不经过 webpack。需要通过绝对路径来引用它们。

例如,目录为public/static/image,image里面存放各种图片:

引入图片logo.png:

<img src="/static/image/logo.png" >

在 css 中 设置背景图片:

.bg {
background: url('/satic/image/bg.jpg');
}

注意:

public 目录提供的是一个应急手段,当你通过绝对路径引用它时,留意应用将会部署到哪里。如果你的应用没有部署在域名的根部,那么你需要为你的 URL 配置 publicPath 前缀。

何时使用 public 文件夹

你需要在构建输出中指定一个文件的名字。

你有上千个图片,需要动态引用它们的路径。

有些库可能和 webpack 不兼容,这时你除了将其用一个独立的 标签引入没有别的选择。

通过 webpack 的处理好处:

脚本和样式表会被压缩且打包在一起,从而避免额外的网络请求。

文件丢失会直接在编译时报错,而不是到了用户端才产生 404 错误。

最终生成的文件名包含了内容哈希,因此你不必担心浏览器会缓存它们的老版本。

public 目录提供的是一个应急手段,当你通过绝对路径引用它时,留意应用将会部署到哪里。

assets文件夹就是用来放置经过webpack处理的资源的

需要使用相对路径引入:

<!-- 具体根据目录结构来 -->

<img src="../assets/images/logo-black.png">

img动态路径:

<img :src="imgurl">
data () {
return { 
imgurl: require("../assets/images/gou.png") 
}
}

css 背景图:

.login-wrapper {
 background: url('../../assets/images/bg.jpg');
}

参考:官方解释

3、scss全局变量的配置

Module build failed (from ./node_modules/sass-loader/lib/loader.js):
Undefined variable. 955 │ 
 border-right: 1px solid $borderColor;  
  ^^^^^^^^^^^^
root stylesheet in D:\VUE\haigui-proxy\src\views\index\index.vue (line 955, column 33)

若原项目中使用了scss并且使用了全局变量,需要在vue.config.js中重新配置,并把全局变量文件放到src/assets/css目录下。

在原项目中需要在build/utils.js中进行配置

scss: generateLoaders('sass').concat(
 {
 loader: 'sass-resources-loader',
 options: {
  resources: path.resolve(__dirname, '../src/assets/css/haigui-variable.scss')
 }
 }
)

新项目中就简单的多,直接编辑vue.config.js,加入一节内容即可:

css: {
 loaderOptions: {
 sass: {
  // @/ 是 src/ 的别名 ~是必须有要加的
  data: '@import "~@/assets/css/haigui-variable";'
  // 如果没有设置别名可以这么写
  // data: '@import "./src/assets/css/haigui-variable";'
 }
 }
}

4、runtime-only

You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

原因:

vue有两种形式的代码 compiler(模板)模式和runtime模式(运行时),vue模块的package.json的main字段默认为runtime模式, 指向了"dist/vue.runtime.common.js"位置。

这是vue升级到2.0之后就有的特点。

而在main.js文件中,初始化vue却是这么写的,这种形式为compiler模式的,所以就会出现上面的错误信息。

new Vue({
 el: '#app',
 router,
 store,
 components: { App },
 template: '<App/>'
});

解决办法:

方法一:

将main.js中的代码修改如下就可以

new Vue({
 router,
 store,
 render: h => h(App)
}).$mount('#app')

到这里我们的问题还没完,那为什么之前是没问题的,之前vue版本也是2.x的呀?

这也是第二种解决办法:

因为之前我们的webpack配置文件里有个别名配置,具体如下

resolve: {
 alias: {
  'vue$': 'vue/dist/vue.esm.js' //内部为正则表达式 vue结尾的
 }
}

也就是说,import Vue from ‘vue' 这行代码被解析为 import Vue from ‘vue/dist/vue.esm.js',直接指定了文件的位置,没有使用main字段默认的文件位置。

所以第二种解决方法就是,在vue.config.js文件里加上webpack的如下配置即可,

configureWebpack: {
 resolve: {
 alias: {
  'vue$': 'vue/dist/vue.esm.js' 
 }
 }
}

既然到了这里就会想到第三中解决方法,那就是在引用vue时,直接写成如下即可

import Vue from 'vue/dist/vue.esm.js'

以上这篇vue项目查看vue版本及cli版本的实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于SpringBoot与Vue交互跨域问题解决方案

    关于SpringBoot与Vue交互跨域问题解决方案

    最近在利用springboot+vue整合开发一个前后端分离的个人博客网站,所以这一篇总结一下在开发中遇到的一个问题,关于解决在使用vue和springboot在开发前后端分离的项目时,如何解决跨域问题。在这里分别分享两种方法,分别在前端vue中解决和在后台springboot中解决。
    2021-10-10
  • vue引入新版 vue-awesome-swiper插件填坑问题

    vue引入新版 vue-awesome-swiper插件填坑问题

    这篇文章主要介绍了vue引入新版 vue-awesome-swiper插件填坑问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue使用urlEncode问题

    vue使用urlEncode问题

    这篇文章主要介绍了vue使用urlEncode问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue之Axios的异步通信详解

    Vue之Axios的异步通信详解

    这篇文章主要为大家详细介绍了Vue之Axios的异步通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • vue项目中less的一些使用小技巧

    vue项目中less的一些使用小技巧

    前段时间一直在学习vue,开始记录一下遇到的问题,下面这篇文章主要给大家介绍了关于vue项目中less的一些使用小技巧,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 浅谈validator自定义验证及易错点

    浅谈validator自定义验证及易错点

    这篇文章主要介绍了validator自定义验证及易错点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • vue实现lodop打印功能的示例

    vue实现lodop打印功能的示例

    这篇文章主要介绍了vue实现lodop打印功能的示例,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-11-11
  • vue3中的ref()详解

    vue3中的ref()详解

    ref对象可以通过.value属性进行修改,修改后的值也是响应式的,并且修改后会触发相关的副作用,这篇文章主要介绍了vue3中的ref(),需要的朋友可以参考下
    2023-05-05
  • vue中使用jeecg进行前后端联调方式

    vue中使用jeecg进行前后端联调方式

    这篇文章主要介绍了vue中使用jeecg进行前后端联调方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 浅谈mint-ui loadmore组件注意的问题

    浅谈mint-ui loadmore组件注意的问题

    下面小编就为大家带来一篇浅谈mint-ui loadmore组件注意的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论