范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从jQuery到Vue3的快捷通道

  当初使用 jQuery 做了几个简单的项目,算是有一点点了解,现在学习Vue3,发现了一个可以快速转换思维的通道 —— 使用CDN的方式模拟 Vite 建立的项目! CDN方式
  jQuery的使用非常方便,用 script 引入 js文件即可,然后找到DOM即可开始操作。
  而 Vue3 也支持直接用 script 引入的方式,然后使用插值的方式绑定数据,我们来看一下使用方法: 引入 vue.js                                      Vue3 CDN的简单演示   
  这样我们就可以在网页里面使用 Vue 了,另外我们引入了一个UI库——element-plus。 绑定数据和事件
  然后我们写一个 hello word:             
  自增
  {{ count }}              插值
  在模板里面使用双大括号即可实现数据绑定。 事件
  可以使用原生button,也可以使用UI库提供的button,用v-on(简写:@)添加事件。 定义数据
  这里采用 composition API 的方式,使用 ref,实现简单的计数功能。 挂载
  使用 createApp 创建一个App,然后挂载插件、UI库、路由、状态等。
  本篇只做简单介绍,详细介绍请移步官网:https://staging-cn.vuejs.org/ 组件化
  一个项目有很多功能,显然不能把所有代码都放在一起,那么如何管理代码呢?Vue提供了组件化的方式,便于组织代码。
  我们可以建立一个 count.js 文件(单文件组件),实现上面那个简单的计数功能: count.js const { ref } = Vue export default {   name: "count",   template: `      
  自增
  {{ count }}   `   setup() {     const count = ref(0)     return {       count     }   } }
  这样就可以建立一个单独的Vue组件,相关的代码都可以放在这里,管理起来就更容易了。 工程化项目
  一般我们可以用 Vite 建立一个项目,然后安装需要的各种插件,但是这需要我们先了解 node、npm、yarn、vite等,还要先配置好环境,这些对于新手来说容易懵。
  那么能不能 暂时 跳过这些,直接建立一个工程化的项目呢?当然是可以的!
  我们可以模仿 Vite 建立的项目的文件结构,用CDN的方式实现一个项目。
  为啥要用CDN的方式模拟一下呢?因为这样可以先不用了解node等前置知识点,可以比较清晰地看到 Vue 的运作方式,快速理解Vue的特点,可以作为一种过渡方式。 目录结构
  可以发现和 Vite 建立的项目的结构是基本一样的,只是把.vue后缀变成了.js后缀。 加载各种插件                                                                                 pinia 状态管理
  pinia 需要加载两个文件,一个是pinia.js,另一个是其依赖项 vue-demi,实现兼容vue2的功能。 加载 main.js
  main.js 是入口文件,需要在 index.html 使用 type="module" 的方式引入,这样main里面才可以使用"import"。               这里是CDN仿工程化开发的演示...               设置 main.js
  然后在main里面加载根节点、路由设置、状态设置、UI库等操作。 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") // 对应p })
  可以直接使用 import App from "./app.js" 的方式加载,但是不好管理缓存。
  所以采用了这种增加版本号的方式,以确保可以加载最新文件。 App.js
  可以在 app.js 做页面布局,当然也可以实现其他功能。 const { ref, defineAsyncComponent } = Vue  // 加载菜单组件 const myMenu = defineAsyncComponent(() => import("./views/menu.js" + window.__ver))  export default {   name: "app",   components: {     myMenu   },   template: `               CND的方式 模仿工程化项目                                                                                                             CND的简单演示。by Vue3、element-plus、Pinia、vue-Router                           `,   setup() {     return {     }   } }
  这里采用异步组件的方式加载子组件,方便设置版本号,确保可以加载最新文件。 设置路由
  为了更方便的加载组件,我们可以使用 vue-router 设置路由。  // 定义路由  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 export default {   name: "menu",   template: `     首页
  pinia
  h的演示
  jsx的演示
  `,   setup() {     return {     }   } }
  这里先使用 router-link 做个简单的连接,也可以使用 el-menu 做菜单。 状态管理
  这里采用最新的 pinia 进行状态管理,因为 Vuex 有点臃肿。
  首先需要在 main.js 里面挂载pinia,见 main 的部分。
  然后我们建立一个js文件,定义一个状态,再建立一个js文件作为组件。 count.js 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
  然后在组件里面引入: // 状态 import { useCounterStore } from "./count.js"  export default {   name: "pinia-test",   setup() {     const test = useCounterStore()     return { count }   } } pinia.html
  我们可以把 template 部分拿出去,做成 html 文件:    测试pinia的状态
  {{ test }}
  修改
  这样一个简单的项目结构就搭建起来了。 小结
  本篇仅为过渡,并不是说正式项目要用这种方式开发,因为缺点也是很明显的。
  当然也是有一些优点: 可以更充分的利用CDN,缓存vue.js这类的变化频率低的 js 文件,只需要更新业务相关的代码即可。 如果CDN不卡的话,加载速度可以更快。 可以利用CDN的资源,缓解自己服务器的压力。 项目可以分模块开发,稳定且基础的模块可以打包、发布到CDN里面使用。 源码和演示源码:https://gitee.com/naturefw-project/vue3-cnd 演示:https://naturefw-project.gitee.io/vue3-cnd/ 补充
  template 部分,如果用字符串的方式写,那么比较麻烦,所以可以分为 html 文件的方式来写,这样可以使用提示、补全和验证等功能。
  然后做一个加载的函数 myImport : 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)       }     })   }) }

下一个罗纳尔多?巴西16岁新星火了,皇马愿为他放弃哈兰德4年一届的世界杯如今正在如火如荼地进行着,作为夺冠的大热门,巴西队的表现也是非常强势。在41大胜韩国队之后,巴西人顺利挺进了8强,第六次夺冠,看起来已经成为了大概率事件。而巴西队之侵权网易被判赔偿5000万元扎克伯格开怼苹果AppStore太心黑一商业圈1。侵权网易被判赔偿5000万元,迷你世界赔偿额创纪录网易旗下知名游戏我的世界官方今日发布消息称,我的世界诉迷你世界抄袭一案终审获胜。据悉,日前广东省高级人民法院对广州网易扛不住了?华为5G出现转机,外媒欧盟没想象中团结在过去几十年里,欧美企业在通讯技术领域一直遥遥领先,且掌握着绝大多数的技术专利。毫不夸张的说,欧美企业每年收取的专利费用,就可以养活一大公司的人,赚得盆满钵满,试问谁不想一直躺赚下华为MateXs2上市大火,华为MateXs超低价来袭,疯抢首当其冲华为MateXs2作为折叠屏手机,价格自然高。目前8GB256GB版售价10199元,下单即可参加100元领红包的活动。华为的折叠屏手机技术已经非常成熟,多款手机的发布也为其积累了今天面了一个人,问了个JavaConfig(每天一题,一起进大厂)写在前面今天面试了几个人,我都有意问到javaConfig这个概念,熟悉的朋友应该知道这个隶属于SpringBoot体系里。但是最后几个人回答的都不尽如人意。趁此,我们一起来看下这气候变化远非变得更热那么简单全球变暖,是让世界变得更热吗?近日,联合国政府间气候变化专门委员会(IPCC)发布的气候变化2021公众摘要(以下简称摘要)揭示,气候变化远比变得更热更加复杂。实际上,我们正在经历OPPOFindX5Pro成性价比之王,FindX3跌至白菜价,福利来袭了OPPOFindX5Pro现有不错的价格!12GB512GB版本售价5999元,下单满3000元减500元可获赠优惠券。券后实际支付仅为5499元。这款手机最大的卖点就是成像系统。猴子意念打字成功后,马斯克的脑机接口还有多远?ElonMusk(埃隆马斯克)掌管Twitter后,跟TimCook喝过下午茶,消除了一些隔阂。并且,他也身体力行着37吨性能野兽特斯拉Semi交付事宜。而在这周三,他还抽出了时间2022全球超算TOP500排行榜出炉欧盟阿联酋计划建立太空数据中心深知社周报221121国际一周新闻盘点每周资讯国际行业热点资讯大厂动态NO。01亚马逊思科裁员谷歌可能跟进上周,亚马逊已经开始大裁员,人数约为一万人。亚马逊尚未向员工发表正式声明,等保2。0数据库测评MySQL数据库测评(二)安全审计a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计1)执行命令showglobalvariableslikegeneral默认为OFF,不符中国芯传来好消息,国产量子计算机亮剑,外媒ASML或被抛弃随着中国科技企业的崛起,老美也开始百般刁难,尤其在半导体领域。要生产先进的芯片,就必须要使用EUV光刻机。但遗憾地是,先进的芯片制造设备技术,被外企牢牢掌握,中国科技企业就算想要实
无敌大忽悠贾跃亭贾跃亭一个传奇的人,曾经一手缔造了乐视帝国,生态化反忽悠了一批人,几年烧掉1500亿元,却只留下一地鸡毛和一屁股债。作为中国历史上唯一一家实现盈利的视频网站,乐视现在却只能在夹缝中摘抄第三十九天粒子的基础概念粒子的基础概念粒子标准模型,是用于描述粒子性质的理论。该理论将各种各样的现象进行了统一的说明解释。粒子的两面性粒子的存在,就像是在一个玻璃球似的空间中儿个特定位置中的点一样。不过微大溪地不适合穷游!去1次大溪地去2次马尔代夫去4次普吉岛这个世界上,如果有一个地方不适合穷游,那大溪地绝对是其中之一。所有去过大溪地的人,都知道大溪地不是一般的贵。去1次大溪地去1。5次塞舌尔去2次马尔代夫去3次巴厘岛去4次普吉岛。其实恩和的俄罗斯族蒙兀室韦的边卡与黑山头的蒙古包恩和俄罗斯民族乡从白桦林出来,驱车上百公里,傍晚抵达恩和俄罗斯民族乡,这座中俄边境上草原小镇,据说是中国唯一的俄罗斯民族自治乡。乡政府办公楼普通农家的建筑恩和的农家建筑和乡政府办公联盟老板考虑反制杜兰特申请离队的行为,有可能遭遇联盟再次停摆今年休赛季最让球迷意外的就是杜兰特的申请交易,在欧文选择执行合同之后,杜兰特向篮网提出了交易申请,而这让联盟自由市场瞬间炸开了锅,杜兰特甚至还被国内球迷冠以雇佣兵的称号。而杜兰特申等iPhone14还是选择iPhone13?店老板的回答很中肯,分2种情况时间过的是真快,很多人说自己手里的iPhone13还没捂热,下一代的iPhone14系列就要来了。和往年不同的是,今年iPhone14的爆料消息去年就开始了,产业链不断传来关于iP凯特久违露面!连换两身服装出席帆船大奖赛,威廉缺席去支持女足剑桥公爵一家度假归来,公爵夫人凯特也是久违露面,独自一个人出席公务,连续换两套造型气色好!看来平民出身的王妃也能独当一面了,还有王室高级成员还是却,主要是哈里夫妇的离开,增加了哥嫂海外马斯克调侃推特与特斯拉合并,未来或继续抛售特斯拉股票特斯拉CEO马斯克文懂车帝原创彩丽美懂车帝原创行业在宣布终止以440亿美元收购推特的交易后,特斯拉CEO马斯克与推特展开了法律大战。先是推特向法院起诉,要求强制马斯克按协议完成收购三星GalaxyS23Ultra全新渲染图曝光,200MP主摄来了,不容错过相信很多人都熟悉三星手机,在旗舰手机领域深有建树,GalaxyS系列一枝独秀,手机品质硬件配置始终走在前列。虽然近几年国内市场不佳,但全球市场份额不降反升。这其中不仅仅有Galax太空稻之家!宁西街转化科技力量助推农业农村现代化发展近年来宁西街坚持以党建为引领把乡村振兴战略绘入书香南樵,产业高地的总蓝图中全力推进南山福水耕读家园新乡村示范带建设该示范带全方位诠释乡村振兴战略实施集耕读文化旅游体验研学产业示范乡地道北京味,一家开了37年的家常菜馆子,凭什么让北京人念念不忘今儿跟大伙儿聊一家北京人开的菜馆儿,只要是住在东四的老北京人,可以说是无人不知无人不晓,见天儿一到饭点就会排起长队,说的正是有口皆碑的朝阳门内大街的东四民芳,这是一家民营老字号,跟