前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从 jQuery 到 Vue3 的快捷通道

从 jQuery 到 Vue3 的快捷通道

作者头像
用户1174620
发布于 2022-05-09 11:41:38
发布于 2022-05-09 11:41:38
75600
代码可运行
举报
运行总次数:0
代码可运行

当初使用 jQuery 做了几个简单的项目,算是有一点点了解,现在学习Vue3,发现了一个可以快速转换思维的通道 —— 使用CDN的方式模拟 Vite 建立的项目!

CDN方式

jQuery的使用非常方便,用 script 引入 js文件即可,然后找到DOM即可开始操作。 而 Vue3 也支持直接用 script 引入的方式,然后使用插值的方式绑定数据,我们来看一下使用方法:

  • 引入 vue.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <head>
    <meta charset="UTF-8" />
    <!--加载 vue3 -->
    <script src="https://unpkg.com/vue@3.2.33/dist/vue.global.js"></script>
    <!--加载 element-plus -->
    <script src="https://unpkg.com/element-plus@2.1.9/dist/index.full.js"></script>
    <link href="https://unpkg.com/element-plus@2.1.9/dist/index.css" rel="stylesheet"/>
    <title>Vue3 CDN的简单演示</title>
  </head>

这样我们就可以在网页里面使用 Vue 了,另外我们引入了一个UI库——element-plus。

  • 绑定数据和事件

然后我们写一个 hello word:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
    <div id="app">
      <button @click="count++">自增</button> <br>
      <el-button @click="count++" >自增</el-button> <br>
      {{ count }}
    </div>
    <script>
      const { ref, createApp } = Vue
      const app = {
        setup() {
          const count = ref(0)
          return {
            count
          }
        }
      }
      
      createApp(app)
        .use(ElementPlus)
        .mount('#app')
    </script>
  </body>
  • 插值 在模板里面使用双大括号即可实现数据绑定。
  • 事件 可以使用原生button,也可以使用UI库提供的button,用v-on(简写:@)添加事件。
  • 定义数据 这里采用 composition API 的方式,使用 ref,实现简单的计数功能。
  • 挂载 使用 createApp 创建一个App,然后挂载插件、UI库、路由、状态等。

本篇只做简单介绍,详细介绍请移步官网:https://staging-cn.vuejs.org/

组件化

一个项目有很多功能,显然不能把所有代码都放在一起,那么如何管理代码呢?Vue提供了组件化的方式,便于组织代码。

我们可以建立一个 count.js 文件(单文件组件),实现上面那个简单的计数功能:

  • count.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const { ref } = Vue
export default {
  name: 'count',
  template: `
     <button @click="count++">自增</button> <br>
     <el-button @click="count++" >自增</el-button> <br>
     {{ count }}
  `
  setup() {
    const count = ref(0)
    return {
      count
    }
  }
}

这样就可以建立一个单独的Vue组件,相关的代码都可以放在这里,管理起来就更容易了。

工程化项目

一般我们可以用 Vite 建立一个项目,然后安装需要的各种插件,但是这需要我们先了解 node、npm、yarn、vite等,还要先配置好环境,这些对于新手来说容易懵。

那么能不能暂时跳过这些,直接建立一个工程化的项目呢?当然是可以的!

我们可以模仿 Vite 建立的项目的文件结构,用CDN的方式实现一个项目。

为啥要用CDN的方式模拟一下呢?因为这样可以先不用了解node等前置知识点,可以比较清晰的看到 Vue 的运作方式,快速理解Vue的特点,可以作为一种过渡方式。

目录结构

可以发现和 Vite 建立的项目的结构是基本一样的,只是把.vue后缀变成了.js后缀。

加载各种插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="../nfwt.ico" />
    <script src="src/script/appImport.js?v=1"></script>
    <!--加载 axios -->
    <script src="https://unpkg.com/axios@0.26.1/dist/axios.min.js"></script>
    <!--加载 vue3 -->
    <script src="https://unpkg.com/vue@3.2.33/dist/vue.global.js"></script>
    <!--加载 vue-router -->
    <script src="https://unpkg.com/vue-router@4.0.14/dist/vue-router.global.js"></script>
    <!--加载 pinia -->
    <script src="https://unpkg.com/vue-demi@0.12.5/lib/index.iife.js"></script>
    <script src="https://unpkg.com/pinia@2.0.13/dist/pinia.iife.js"></script>
    <!--加载 element-plus -->
    <script src="https://unpkg.com/element-plus@2.1.9/dist/index.full.js"></script>
    <link href="https://unpkg.com/element-plus@2.1.9/dist/index.css" rel="stylesheet"/>
  </head>
  • pinia 状态管理 pinia 需要加载两个文件,一个是pinia.js,另一个是其依赖项 vue-demi,实现兼容vue2的功能。

加载 main.js

main.js 是入口文件,需要在 index.html 使用 type="module" 的方式引入,这样main里面才可以使用“import”。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <body>
    <div id="app">
      这里是CDN仿工程化开发的演示... 
    </div>
    <script type="module" src="src/main.js"></script>
  </body>

设置 main.js

然后在main里面加载根节点、路由设置、状态设置、UI库等操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const ver = window.__ver || '?v=0'
const pinia = Pinia.createPinia()

Promise.all([
  import('./app.js' + ver),
  import('./router/index.js' + ver),
]).then((res) => {
  Vue.createApp(res[0].default)
    .use(res[1].default) // 挂载路由
    .use(ElementPlus) // 加载ElementPlus
    .use(pinia) // 状态管理
    .mount('#app') // 对应div
})

可以直接使用 import App from './app.js' 的方式加载,但是不好管理缓存。 所以采用了这种增加版本号的方式,以确保可以加载最新文件。

App.js

可以在 app.js 做页面布局,当然也可以实现其他功能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const { ref, defineAsyncComponent } = Vue

// 加载菜单组件
const myMenu = defineAsyncComponent(() => import('./views/menu.js' + window.__ver))

export default {
  name: 'app',
  components: {
    myMenu
  },
  template: `
  <el-container>
    <el-header>
      CND的方式 模仿工程化项目
    </el-header>
    <el-container>
      <el-aside width="200px">
        <!--菜单-->
        <my-menu/>
      </el-aside>
      <el-container>
        <el-main>
          <!--路由容器 -->
          <router-view></router-view>
        </el-main>
        <el-footer>
          CND的简单演示。by Vue3、element-plus、Pinia、vue-Router
        </el-footer>
      </el-container>
    </el-container>
  </el-container>
  `,
  setup() {
    return {
    }
  }
}

这里采用异步组件的方式加载子组件,方便设置版本号,确保可以加载最新文件。

设置路由

为了更方便的加载组件,我们可以使用 vue-router 设置路由。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 定义路由

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => myImport('views/home')
  },
  {
    path: '/pinia',
    name: 'pinia',
    component: () => myImport('views/state/pinia')
  },
  {
    path: '/',
    name: 'ui',
    component: () => myImport('views/ui/ui-elp')
  },
  {
    path: '/h',
    name: 'h-test',
    component: () => myImport('views/h/h')
  },
  {
    path: '/jsx',
    name: 'jsx-test',
    component: () => myImport('views/h/jsx')
  }
]

const base = '/cdn3/'
const router = VueRouter.createRouter({
  history: VueRouter.createWebHistory(base),
  routes
})

export default router

如果组件只有js文件,那么可以直接使用 import 来加载,如果组件由js+html组成,需要使用 myImport 来加载,myImport 是我自己封装的函数,在最后介绍。

设置菜单

我们先做一个简单的菜单:

  • menu.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export default {
  name: 'menu',
  template: `
    <router-link :to="{name:'Home'}">首页</router-link><br><br>
    <router-link :to="{name:'pinia'}">pinia</router-link><br><br>
    <router-link :to="{name:'h-test'}">h的演示</router-link><br><br>
    <router-link :to="{name:'jsx-test'}">jsx的演示</router-link><br><br>
  `,
  setup() {
    return {
    }
  }
}

这里先使用 router-link 做个简单的连接,也可以使用 el-menu 做菜单。

状态管理

这里采用最新的 pinia 进行状态管理,因为 Vuex 有点臃肿。

首先需要在 main.js 里面挂载pinia,见 main 的部分。 然后我们建立一个js文件,定义一个状态,再建立一个js文件作为组件。

  • count.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const { defineStore } = Pinia

const testPromie = () => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(100)
    }, 500)
  })
}

export const useCounterStore = defineStore('counter', {
  state: () => {
    return { count: 0, name: '' }
  },
  actions: {
    increment() {
      this.count ++
    },
    async loadData(val, state) {
      const foo = await testPromie()
      this.count += foo
      this.name = 'async 赋值:' + new Date().valueOf()
    },
    loadData2(val, state) {
      testPromie().then((val) => {
        this.count += val
        this.name = '异步赋值:' + new Date().valueOf()
      })
    }
  }
})
  • pinia.js

然后在组件里面引入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 状态
import { useCounterStore } from './count.js'

export default {
  name: 'pinia-test',
  setup() {
    const test = useCounterStore()
    return { count }
  }
}
  • pinia.html

我们可以把 template 部分拿出去,做成 html 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>
  测试pinia的状态<br>
  {{ test }}<br>
  <el-button type="" @click="test.increment()">修改</el-button>
</div>

这样一个简单的项目结构就搭建起来了。

小结

本篇仅为过渡,并不是说正式项目要用这种方式开发,因为缺点也是很明显的。

当然也是有一些优点:

  • 可以更充分的利用CDN,缓存vue.js这类的变化频率低的 js 文件,只需要更新业务相关的代码即可。
  • 如果CDN不卡的话,加载速度可以更快。
  • 可以利用CDN的资源,缓解自己服务器的压力。
  • 项目可以分模块开发,稳定且基础的模块可以打包、发布到CDN里面使用。

源码和演示

补充

template 部分,如果用字符串的方式写,那么比较麻烦,所以可以分为 html 文件的方式来写,这样可以使用提示、补全和验证等功能。

然后做一个加载的函数 myImport :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.myImport = (url) => {
  return new Promise((resolve, reject) => {
    const ver = window.__ver || ''
    const baseUrl = window.__basrUrl || '/src/'
    // 先加载 js
    import(baseUrl + url + '.js' + ver).then((resjs) => {
      const js = resjs.default
      if (!js.template) {
        // 如果模板是空的,表示需要加载 html作为模板
        axios.get(baseUrl + url + '.html' + ver).then((resHTML) => {
          js.template = resHTML.data
          resolve(js)
        })
      } else {
        // 否则直接使用 js 注册组件
        resolve(js)
      }
    })
  })
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux 用户必备的 Git 图形化工具
Git 是一个免费的开源分布式版本控制系统,用于软件开发和其他几个版本控制任务。它旨在根据速度、效率和数据完整性来处理从小到大的项目。
数据科学工厂
2023/10/27
2.8K0
Linux 用户必备的 Git 图形化工具
Best Graphical Git Clients and Git Repository Viewers for Linux
Git is a free and open source distributed version control system for software development and several other version control tasks. It is designed to cope with everything from small to very large projects based on speed, efficiency and data integrity.
shaonbean
2019/05/26
8510
你肯定没用过这个全新的 Git 客户端工具!
我们都知道,目前市面上可用的 Git 客户端种类繁多,常见的有 Gitkraken、Source Tree、tortoiseGit、SmartGit 等工具。
GitHubDaily
2020/05/19
1K0
你肯定没用过这个全新的 Git 客户端工具!
程序员必备!10款实用便捷的Git可视化管理工具
俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。我们在团队开发中统一某个开发工具的使用能够大大降低沟通成本,提高协作沟通效率。今天给大家分享10款实用便捷的Git可视化管理工具,注意排名不分先后希望能对各位小伙伴有所帮助。
追逐时光者
2024/01/27
25.6K1
程序员必备!10款实用便捷的Git可视化管理工具
SmartGit:Git版本控制系统的图形化客户端程序
Git最初是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。后来Git内核已经成熟到可以独立地用作版本控制。很多有名的软件都使用Git来进行版本控制,其中有Linux内核,X.Org服务器和OLPC (OLPC) 内核开发。 当使用github做协同的时候,我们常常需要在客户端安装相应的软件,github for Windows使用介绍 这篇文章可以很好带我们入门github,同时还带了一个gitshell,这个工具可以运行github的所有命令,但是输入命令非
张善友
2018/01/30
1.3K0
我看还有谁不动Git
Git 是一个开源的分布式版本控制系统,用于管理一个或多个文件的整个历史记录。它有助于跟踪文件的变化,同时让多个开发者对同一个文件做出更改,并帮助开发者们在不同时间点进行历史查阅和版本比较。
MCNU云原生
2023/03/17
1.8K0
我看还有谁不动Git
零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
没有哪一个学编程的人不知道Git,但对于初学者而言,Git这种跟一大堆命令行联系在一起的东西,可并没有那么亲切友好易上手。
量子位
2019/08/19
6830
零代码入门GitHub,图形化交互让你轻松存代码 | 附Git GUI推荐
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
下载完成后,双击运行安装包,按照提示进行安装。安装过程中,你可以选择Git Bash、Git GUI等组件,根据自己的需要进行选择。其中,Git Bash是一个命令行工具,可以让你在Windows上使用Linux的命令行工具;Git GUI是一个图形化界面,可以让你更方便地管理Git仓库。
小万哥
2023/05/28
1.6K0
Git 安装和配置教程:Windows - Mac - Linux 三平台详细图文教程,带你一次性搞 Git 环境
SmartGit :图形化Git客户端
smartgit是一个企业级的Git、Mercurial、以及Subversion图形化客户端软件,功能非常强大,它可以简单快速的实现Git及Mercurial中的版本控制工作,从而大大提高您的工作效率!
啾咪啾咪
2023/02/14
1K0
如何在 Ubuntu 中安装 QGit 客户端
QGit是一款由Marco Costalba用Qt和C++写的开源的图形界面 Git 客户端。它是一款可以在图形界面环境下更好地提供浏览版本历史、查看提交记录和文件补丁的客户端。它利用git命令行来执行并显示输出。它有一些常规的功能像浏览版本历史、比较、文件历史、文件标注、归档树。我们可以格式化并用选中的提交应用补丁,在两个或多个实例之间拖拽并提交等等。它允许我们用它内置的生成器来创建自定义的按钮去执行特定的命令。
知忆
2021/06/08
1.4K0
awesome-linux-software-cn
Awesome-Linux-Software 是由 LewisVo 发起并维护的 Linux 软件资源列表。该列表收集了许多在 Linux 平台下非常棒的软件、实用工具以及其它相关资料,方便 Linux 爱好者查阅。 另外一个中文版本请参见 这里 应用程序 音频 Airtime - Airtime 是开源广播软件,它用于时间安排和远程站点管理。Open-Source Software Ardour -在 Linux 上录音、编辑和混音。 Audacious - 一款开源音频播放器,可以随心所欲地播放你的音乐
guanguans
2018/05/09
6.7K0
为什么需要使用Git客户端?
Git 是 Linux Torvalds 为了帮助管理 Linux® 内核开发而开发的一个开放源码的版本控制软件。正如所提供的文档中说的一样,“Git 是一个快速、可扩展的分布式版本控制系统,它具有极
张善友
2018/01/30
1.9K0
为什么需要使用Git客户端?
Git学习-09
git tag 是 Git 中用于标记特定提交的功能。标签通常用于标记软件版本,以便在将来的某个时间点能够轻松地找到和使用该特定版本的代码。以下是一些使用 Git 标签的原因:
kwan的解忧杂货铺
2024/10/04
1030
Git学习-07
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 创建,用于有效、高速地处理从小到大的项目版本管理。Git 是目前世界上最流行的版本控制系统之一,广泛应用于软件开发中。
kwan的解忧杂货铺
2024/10/03
1170
SmartGit Mac(图形化Git客户端)21.2.3/22.1
martGit for Mac是一款适用于MAC平台的Git客户端应用程序,它能在您的工作上满足您的需求,smartgit是一个企业级的Git、Mercurial、以及Subversion图形化客户端软件,功能非常强大,它可以简单快速的实现Git及Mercurial中的版本控制工作,从而大大提高您的工作效率。
Mac知识分享
2022/07/31
1.1K0
Git学习-08
总体而言,使用 Git 分支可以提高团队的工作效率,减少冲突,更好地组织和管理代码库的演进过程。分支使得开发者能够同时进行多个独立的工作,并且能够更灵活地应对不同的开发和维护需求。
kwan的解忧杂货铺
2024/10/03
960
Git学习-04
两个常驻分支(master & develop),代码开发都在临时分支上进行。需要做好日常管理(如及时删除已合并的临时分支),否则容易导致混乱。
kwan的解忧杂货铺
2024/10/01
1080
Git学习-03
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 创建,用于有效、高速地处理从小到大的项目版本管理。Git 是目前世界上最流行的版本控制系统之一,广泛应用于软件开发中。
kwan的解忧杂货铺
2024/10/01
1050
老牌Git客户端:SmartGit for Mac
SmartGit for Mac一款老牌Git客户端,它能在您的工作上满足您的需求,smartgit是一个企业级的Git、Mercurial、以及Subversion图形化客户端软件,它可以简单快速的实现Git及Mercurial中的版本控制工作,从而大大提高您的工作效率。
Mac软件分享
2022/09/04
2.4K0
老牌Git客户端:SmartGit for Mac
Git 可视化的实现:提升版本控制体验的利器
Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发和项目管理中。然而,对于许多人来说,Git 命令行操作可能有些复杂且难以直观理解,特别是当涉及到复杂的分支和合并操作时。为了更好地帮助开发者掌握 Git 的操作过程,Git 可视化应运而生。通过图形化界面和可视化工具,开发者能够更清晰地理解项目的历史、分支结构以及协作中的变更情况。
TENGZO
2024/10/14
1760
相关推荐
Linux 用户必备的 Git 图形化工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档