详细搞懂vue2.0 3.0区别-summernote富文本使用

news2024/10/6 18:30:46

文章目录

    • 背景
    • 介绍
    • 必备知识
    • 实操安装
    • 回退脚手架vue cli版本
    • vue-使用summernote富文本功能(不失效版)
    • 小知识

如果感觉有用点个关注,一键三连吧!蟹蟹!!!

背景

  一开始只是准备实现summernote富文本,网上搜的教程那叫一个乱,抄袭照搬,愣是浪费了我很多时间。中间遇到很多问题,比如nodejs、vue、vue-cli需要安装什么版本、什么版本稳定、如何安装这些版本、如何使用最新版是否可以实现,网上基本没有一个能够说的明白,或者说很是笼统、混淆。不过最终的结果是好的,最终实现了。

介绍

Vue是什么?而Vue Cli又是什么?我们需要简单了解和认知,不要混淆。

Vue是渐近式框架,你可以用它一个功能,也可以用全家桶。比如你可以在老的jsp或thymeleaf项目里,引入vue.js,只用它核心的数据绑定功能。

Vue CLI是一个脚手架,通俗点说就是代码生成器,可以快速生成一套基于Vue完整的前端框架,单独编译,单独部署。可以再集成各种第三方插件,扩展出更多的功能。

vue 和 vue-cli 的区别以及关联 基本概念** vue:是一套框架,用于构建用户界面的渐进式框架。 Vue-cli: 而vue-cli 是一个基于 Vue.js进行快速开发的完整系统**。 Vue vue主要是从基础知识、组件的了解、动画的过渡、可复用性和组合以及工具、模块化的管理。

必备知识

必须要了解到的命令:
vue脚手架安装及卸载

vue-cli卸载:
npm uninstall vue-cli -g(3.0以下版本卸载)
npm uninstall -g @vue/cli(3.0以上版本卸载)

vue-cli安装:
npm install -g @vue/cli (安装的是最新版)
npm install vue-cli@2.9.6 (指定版本安装【指定版本为3.0以下版本】,其中2.9.6为版本号)
npm install -g @vue/cli@3.11.0(指定版本安装【指定版本为3.0以上版本】,其中3.11.0为版本号)

查看vue与vue cli版本信息

vue --version或者vue -V  //查看版本信息Vue-cli

npm list vue || npm list vue -g  //查看Vue版本

如何安装使用vuejs
先简单说一下步骤:
1、安装node.js
2、安装vue-cli脚手架,然后就可以创建项目了
3、把创建好的项目,使用vscode软件进行开发即可(你也可以使用其他软件进行开发)

如果想要简单创建项目玩一下,说实话安装很简单的,也可以参考图文并茂博客:Vue安装-使用可视化管理工具

注意、注意、注意,先不要安装,看完下面我安装的版本,再操作(参考,探究到底)

实操安装

①node.js需要安装什么版本,如何选择?
  我安装的是版本V14.17.0;我认为它是很稳定的,你可以任意选择其他版本。这个并不是很影响(作为参考)
附带安装node全部版本,官网下载地址:https://nodejs.org/dist/
②vue cli脚手架需要安装什么版本,如何选择?
  这里我要解释一下,目前创建项目可供选择vue2.0、vue3.0;请不要混淆!!!
如果你只想使用vue2作为主版本,请安装@vue/cli4.4.6版本,因为我在官网中看到了这句话

对于 Vue 3,你应该使用 npm 上可用的 Vue CLI v4.5 作为 @vue/cli。

也就是说Vue CLI 4.5以下,对应的是Vue2,Vue CLI 4.5及以上,对应的是Vue3,当然,创建项目的时候可以选择Vue2

命令查询所有的包,就可以安装想要的版本了,上面必备知识说过如何安装

npm view @vue/cli versions

注意:这里选择对后续操作影响很大
比如:当你选择Vue3创建项目,你需要安装的脚手架是Vue CLI4.5及以上
▲你想要使用elementUi,可能会出现莫名的错误。
Uncaught TypeError: Cannot read properties of undefined(reading ‘prototype’)。
在这里插入图片描述

  解释说法最多的是,vue3中引入了elementUi,vue3.0之后是不支持elementUi的,要使用element plus。不过替换之后,也确实解决了我的问题。(仅供参考,我想一定有其他办法解决)
▲已element为例,Vue3和Vue2配置信息要理清
进行对比Vue2和Vue3的main.js文件

import Vue from "vue";
import App from './App.vue';
import router from "./router";
new Vue({
  router,
  render: h => h(App)
}).$mount("#app");

//Vue2 ->main.js 的配置
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'

createApp(App).use(router).mount('#app')

//Vue3 ->main.js 的配置

进行对比Vue2和Vue3的src -> plugins -> elments.js文件

import Vue from 'vue'
import { Button } from 'element-ui'

Vue.use(Button)
    
//Vue2
import { createApp } from 'vue'
import { Button } from 'element-ui'

createApp().use(Button)
    
//Vue3

比如:脚手架的版本选择-区别细节
  Vue-cli3+ 和 Vue-cli2 的最大区别:在于内置了很多配置,没有 build 文件夹和 config 的配置。但是在开发中,避免不了的还是需要个性化的配置,这里讲一下 vue.config.js 的配置。
在Vue-cli3+版本中你会找不到build文件和里面的webpack.config.js文件,但是开发过程中,避免不了个性化配置。如何做?
Vue 项目中 vue.config.js 文件就等同于 webpack 的 webpack.config.js。

vue-cli3之后创建的时候并不会自动创建 vue.config.js,因为这个是个可选项,所以一般都是需要修改 webpack 的时候才会自己创建一个 vue.config.js。

开发者一般不需要再去知道 weboack 做了什么,所以没有暴露 webpack 的配置文件,但你依然可以创建 vue.config.js 去修改默认的 webpack。
手动创建一个vue.config.js

module.exports = {
  publicPath: './',  // 基本路径
  outputDir: 'dist', // 构建时的输出目录
  assetsDir: 'static', // 放置静态资源的目录
  indexPath: 'index.html', // html 的输出路径
  filenameHashing: true, // 文件名哈希值
  lintOnSave: false, // 是否在保存的时候使用 `eslint-loader` 进行检查。

  // 组件是如何被渲染到页面中的? (ast:抽象语法树;vDom:虚拟DOM)
  // template ---> ast ---> render ---> vDom ---> 真实的Dom ---> 页面
  // runtime-only:将template在打包的时候,就已经编译为render函数
  // runtime-compiler:在运行的时候才去编译template
  runtimeCompiler: false,

  transpileDependencies: [], // babel-loader 默认会跳过 node_modules 依赖。
  productionSourceMap: false, // 是否为生产环境构建生成 source map

  //调整内部的 webpack 配置
  configureWebpack: () => { },

  chainWebpack: () => { },

  // 配置 webpack-dev-server 行为。
  devServer: {
    open: true, // 编译后默认打开浏览器
    host: '0.0.0.0',  // 域名
    port: 8080,  // 端口
    https: false,  // 是否https
    // 显示警告和错误
    overlay: {
      warnings: false,
      errors: true
    },
  }
}

回退脚手架vue cli版本

找到想要安装项目的目录或者Windows+R 打开命令提示符、输入cmd
在这里插入图片描述

查看版本信息

npm list vue || npm list vue -g  //查看Vue版本

node --version  //查看node版本

在这里插入图片描述

回退版本(已我的版本为例)
先使用命令npm uninstall -g @vue/cli(3.0以上版本卸载),在使用命令npm install -g @vue/cli 安装最新版本即可

vue-cli卸载:
npm uninstall vue-cli -g(3.0以下版本卸载)
npm uninstall -g @vue/cli(3.0以上版本卸载)

vue-cli安装:
npm install -g @vue/cli (安装的是最新版)
npm install vue-cli@2.9.6 (指定版本安装【指定版本为3.0以下版本】,其中2.9.6为版本号)
npm install -g @vue/cli@3.11.0(指定版本安装【指定版本为3.0以上版本】,其中3.11.0为版本号)

你可能会遇到的问题,比如使用命令vue ui时,页面会失去连接
问题1:使用vue-cli创建项目时报错

ERROR  ~/.vuerc may be outdated. Please delete it and re-run vue-cli in manual mode.

解决方法

  1. 进入C盘 ----> 用户目录 —> Administrator目录,即C:\Users\Administrator
  2. 找到 .vuerc 文件,把它 删除
  3. 重新创建项目即可

在这里插入图片描述

问题2:vue项目启动报错 spawn cmd ENOENT errno: -4058
报错如下

DONE  Compiled successfully in 11178ms                                                                      


  App running at:
  - Local:   http://localhost:8080/
  - Network: unavailable

  Note that the development build is not optimized.
  To create a production build, run npm run build.

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: spawn cmd ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
    at onErrorNT (internal/child_process.js:465:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
    at onErrorNT (internal/child_process.js:465:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'spawn cmd',
  path: 'cmd',
  spawnargs: [ '/c', 'start', '""', '/b', 'http://localhost:8080/' ]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! app@0.1.0 serve: `vue-cli-service serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the app@0.1.0 serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

因为电脑中缺少cmd运行程序的环境变量。
解决方法:
环境变量配置在系统变量path中添加 C:\windows\system32

后面如果还是不行,建议卸载node.js,删除vue cli 。重装node.js,vue cli脚手架,就可以了(听着麻烦,实际也就几分钟的事情)

vue-使用summernote富文本功能(不失效版)

官方地址summernote:https://summernote.org/
先看一下效果图
在这里插入图片描述

  我这边以vue2.0为例,因为使用vue3.0你们会遇到各种各样的问题。最终可能还搞不成事。(我会简单介绍一下vue3.0我遇到的部分问题)
实操
1、首先版本选择
node.js选择14.17.0版本
vue cli选择@vue/cli4.4.6版本
创建项目时选择vue2.0,默认即可
2、部分插件安装
使用vscode打开你创建的项目,执行下面命令即可。

npm install --save jquery
npm install bootstrap@3
npm install --save codemirror
npm install --save summernote
npm install --save font-awesome
npm install --save jquery popper.js

npm install bootstrap@3;我为什么加上@3版本的,因为高版本会影响到,下面我会简单解释一下。
3、项目中是否存在vue.config.js文件
如果不存在vue.config.js文件,创建一个,我们配置一下jquery

//不要疑惑,vue.config.js就那么多东西,可以直接替代了
const webpack = require('webpack')
module.exports = {
	configureWebpack: {
		plugins: [
			// 支持 jquery
			new webpack.ProvidePlugin({
				$: "jquery",
				jQuery: "jquery",
				"windows.jQuery": "jquery"
			})
		],
	}
}

由于summernote我安装的也是默认高版本的,它有一个bug,需要我们手动改一下。要不然你可能会报错
错误信息:

找不到模块:错误:[区分大小写路径插件] 与磁盘上的相应路径不匹配。C:\Users\[UserName]\[Something_Dir]\[MyProject]\node_modules\jQuery\dist\jquery.jsjquery

打开项目目录中node_modules\summernote\dist\summernote-lite.js和summernote.js
我已summernote.js为例
在这里插入图片描述

4、main.js文件你需要添加一下这些引入

import 'bootstrap/dist/js/bootstrap.min.js'
import 'bootstrap/dist/css/bootstrap.css'
import 'font-awesome/css/font-awesome.css'
import 'summernote'
import 'summernote/dist/lang/summernote-zh-CN'
import 'summernote/dist/summernote.css'
import 'popper.js'

5、你可以使用命令vue ui打开视图化工具,安装一下插件(建议,不想安装也行)
在这里插入图片描述

6、代码(注意使用快捷键Shift+Alt+F美化一下代码)

<template>
  <div id="editor_view">
    <div id="summernote2"></div>

    <el-button type="primary" size="mini" @click="getInputValue"
      >获取输入值</el-button
    >
  </div>
</template>

<script>
// 在当前页面导入jquery, 也可在全局导入
import $ from "jquery";
export default {
  data() {
    return {
      // 富文本编辑器输入的内容
      contant: "",
    };
  },

  // 在mounted生命周期调用
  mounted() {
    this.summernote();
  },
  methods: {
    // 引用summernote

    summernote() {
      $("#summernote2").summernote({
        toolbar: [
          ["style"],
          [
            "style",
            [
              "bold",
              "italic",
              "underline",
              "strikethrough",
              "superscript",
              "subscript",
              "clear",
            ],
          ],
          ["name", ["fontname"]],
          ["size", ["fontsize"]],
          ["color", ["color"]],
          ["para", ["ul", "ol", "paragraph", "height"]],
          ["table"],
          ["insert", ["link", "picture"]],
          ["options", ["undo", "redo", "fullscreen", "codeview", "help"]],
        ],
        focus: true,
        lang: "zh-CN",
        placeholder: "请输入内容",
        height: 500,
      });
    },

    getInputValue() {
      var that = this;
      // 获取summernote输入的值的方法 $('#summernote2').summernote('code')
      that.contant = $("#summernote2").summernote("code");
      console.log(that.contant);
    },
  },
};
</script>

<style scoped>
#editor_view >>> .btn {
  border-color: darkgrey;
}
#editor_view >>> .dropdown-toggle::after {
  display: none;
}

#editor_view >>> .note-toolbar {
  border-bottom: 1px solid darkgrey;
}
</style>

然后运行即可,看到富文本页面。
富文本上传保存图片,后续我会更新链接的

小知识

1、创建vuejs项目
找到想要安装项目的目录或者Windows+R 打开命令提示符、输入cmd
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、bootstrap@3;我为什么下载@3版本的,因为高版本会影响到
如果使用命令npm install bootstrap安装,那么就会装到最新版本的bootstrap,那么就会报错。
报错信息:

Module not found: Error: Can't resolve '@popperjs/core'

该原因是因为bootstrap5依赖Popper.js Core,而不是Popper.js,解决方法是安装Popper.js/core

npm install @popperjs/core --save

如果是bootstrap4则需要popper.js

npm install popper.js --save

3、关于eslint检查问题(选择package.json文件)

   "rules": {
      "no-undef": "off",
      "no-unused-vars": "off",
      "no-restricted-globals": "off"
    }

//可以先把eslint全关了,后续看自己选择了

如果感觉有用点个关注,一键三连吧!蟹蟹!!!

在这里插入图片描述

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯努力。

免责声明:本文章仅用于学习参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stitch it in Time: GAN-Based Facial Editing of Real Videos翻译

代码地址 论文下载 摘要 生成对抗网络在其潜空间内编码丰富语义的能力已被广泛用于面部图像编辑。然而&#xff0c;事实证明&#xff0c;在视频上复制他们的成功具有挑战性。高质量的面部视频集是缺乏的&#xff0c;在视频上存在一个需要克服的基本障碍——时间一致性。我们认…

【Leetcode面试常见题目题解】6. 电话号码的字母组合

题目描述 本文是LC第17题&#xff0c;电话号码的字母组合&#xff0c;题目描述如下&#xff1a; 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意…

智能遍历测试在回归测试与健壮性测试的应用

首先来看业界用的较早也是经常听过的一款工具—— Monkey。这是 Android 官方提供的一个工具。谷歌原本设计这款工具是为了对 App 进行压力测试的。谷歌早期在设计 Android 的时候&#xff0c;Android 需要响应滑动、输入、音量、电话等事件&#xff0c;早期 activity 设计不完…

常见的 5 种 消息队列 使用场景

消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题。 实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。 使用较多的消息队列有 RocketMQ&#xff0c;RabbitMQ&#xff0c;Kafka&#xf…

Android实战场景 - 输入手机号、银行卡号、身份证号时动态格式化

在日常项目开发中&#xff0c;如果稍微严谨点的话&#xff0c;其中关于手机号、银行卡号、身份证号的输入格式有做了限制格式化操作&#xff0c;主要是为了给用户带来更好的体验感&#xff1b; 最近同事正好问到了我这个问题&#xff0c;虽然以前做过这类型功能&#xff0c;但是…

你了解RTK技术吗?—— 揭秘GNSS中的定位技术

上期文章中我们一起探讨了GNSS仿真及其对测试验证的重要意义&#xff0c;今天我们将一起走进GNSS中的定位技术—RTK技术。什么是RTK技术&#xff1f;传统RTK技术与网络RTK技术又有什么区别呢&#xff1f;随着GNSS系统的迅速发展&#xff0c;RTK技术由于可以在作业区域内提供实时…

OpenMLDB v0.7.0 发布

2023 新年伊始&#xff0c;OpenMLDB v0.7.0 正式发布。本次版本更新重点增强了易用性和稳定性&#xff0c;下文将详细介绍主要改进和更新内容。更多 0.7.0 版本内容详见链接&#xff1a;Release v0.7.0 4paradigm/OpenMLDB 系统性改进消息和错误码&#xff0c;提升易用性 在…

【数据库概论】第二章 关系数据库

第二章 关系数据库 目录第二章 关系数据库2.1 关系数据结构2.1.1关系2.1.2关系模式2.1.3关系数据库2.2 关系操作2.2.1 基本的关系操作2.2.2关系数据语言的分类2.3 关系的完整性2.3.1 实体完整性2.3.2 参照完整性2.3.3 用户定义的完整性2.4 关系代数2.4.1 传统集合运算2.4.2 专门…

multimodal remote sensing survey 遥感多模态综述阅读

遥感多模态 参考&#xff1a;From Single- to Multi-modal Remote Sensing Imagery Interpretation: A Survey and Taxonomy Keywords&#xff1a;multimodal remote sensing 文章目录遥感多模态AbstractIntroductionTaxonomy1. Multi-source Alignment1.1 Spatial Alignment1…

《MySQL系列-InnoDB引擎15》慢查询日志拓展-如何开启MySQL慢查询日志?

慢查询日志拓展-如何开启MySQL慢查询日志&#xff1f; 1.查看MySQL慢查询日志是否开启&#xff1f; show variables like %query%; 查询出的结果中&#xff0c;主要观察如下三条&#xff1a; long_query_time 通过long_query_time设置阈值&#xff0c;设置阈值后&#xff0c…

Linux学习笔记 超详细 0基础(中)

Vi/Vim编辑器在Linux下一切皆文件&#xff0c;Vi编辑器和Vim编辑器是可以直接对文本文件进行编辑和操作&#xff0c;没什么大区别&#xff0c;vim有颜色区分更美观&#xff0c;vim 文件路径文件名即可进入一般模式&#xff0c;一般模式就是只读文件&#xff0c;不可进行操作。V…

K8s: Windows 下安装 K8s 开源桌面面板工具 OpenLens 查看集群信息

写在前面 分享一个桌面端的 k8s 面板工具 OpenLens博文内容为 OpenLens 简单介绍和 下载安装教程。安装非常简单,感兴趣的小伙伴快去尝试吧理解不足小伙伴帮忙指正 我所渴求的&#xff0c;無非是將心中脫穎語出的本性付諸生活&#xff0c;為何竟如此艱難呢 ------赫尔曼黑塞《德…

《c++ primer》第三章 字符串、vector、数组

前言 本章内容相比第二章要简单不少&#xff0c;里面比较重要的内容主要是vector和迭代器&#xff0c;这里只是很简单的介绍了一下&#xff0c;在后续的章节会有更详细、复杂的说明。以下记录的都是比较重要或者易混淆的知识点&#xff0c;对于像string、vector只列举了部分方法…

Sentienl一:下载,启动

Hystrix &#xff1a;1需要自己搭建监控平台 2 没有一套web界面可以给我们进行更加细粒度化的配置流控&#xff0c;速率控制 服务熔断&#xff0c;服务降级 Sentinel: 1 单独一个组件&#xff0c;可以独立出来 2 直接界面化的细粒度统一配置 一&#xff1a;丰富的应用场景&…

【Linux】分布式版本控制工具Git的学习 | 在Linux上使用git

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;安度因的学习社区 &#x1f4d6;专栏链接&#xff1a;Linux 文章目录一、前言二、历史背景三、版本控制1、何为版本控制2、版本控制工具① 集中式版本控制工具② 分布式版本控制工具四、代码托管平…

React 学习笔记总结(八)

react-router6版本的学习笔记。 文章目录一、React Router 6二、router6版本的 安装 和 一级路由1. 安装router6版本2. Routes组件 和 Route的 element属性三、router6 之 重定向四、router6的 NavLink高亮五、router6 的 useRoutes路由表(重要)六、router6 的 嵌套路由七、rou…

编写自己的OPTEE CA/TA demo

前言 &#xff08;默认你对optee有一点点点点了解&#xff09; 一、hello_world分析 在\optee_examples\hello_world目录下&#xff0c;optee给出了一个简单的CA/TA示例。 hello_world的结构如下&#xff1a; 1、CA端 A.main.c main.c文件有效代码如下&#xff1a; #incl…

vue2组件之间的数据传递(组件之间使用mitt第三方模块创建事件中心进行订阅与发布)

目录 一、组件之间的通信 1、组件之间的关系&#xff1a;父子关系、兄弟关系、跨级关系 2、父子组件之间的通信(数据传递)&#xff1a; 3、兄弟组件之间的通信&#xff08;数据传输&#xff09;&#xff1a; 4、跨级组件之间的通信&#xff1a;provide / inject 类似于消息…

正则表达式 - 匹配开头、结尾、中间 - 某天气网站网页源代码分析

背景 爬取某天气网站数据&#xff0c;使用 Selenium 能够得到渲染数据后的页面源代码。特定日期的真实数据肯定只有1份&#xff0c;展示在页面表格中&#xff0c;但是源代码中提供了3个都有数据的 Table&#xff0c;而其中2个Table 的数据是通过 math.random 生成后填充&#…

ASP.NET Core 3.1系列(25)——Autofac中的泛型注册和程序集注册

1、前言 在实际开发业务中&#xff0c;泛型的应用非常广泛&#xff0c;而这也就产生了一个问题&#xff1a;泛型类和泛型接口该怎么注册&#xff1f;难道要开发者一行一行去写泛型构造参数吗&#xff1f;同时&#xff0c;实际业务中往往也会对项目进行分层设计&#xff0c;例如…