|
5 {6 ?8 t! j$ e: q5 \3 p& ~
适合做seo的前端框架JavaScript最初是为Web应用程序创建的但是随着前端技术的发展,大多数开发人员更喜欢使用基于JavaScript的框架它简化了你的代码以及使你能完成更多全栈工作,您几乎可以在任何框架中使用JavaScript。 & ~3 F& \6 R; Z8 T
使用什么类型的框架决定了创建应用程序的便捷程度因此,您必须慎重选择在已经足够复杂的前端环境里,其中两个框架脱颖而出我们会在本文中对Ember.js和Vue.js之间进行对比,以帮助你更好的做出判断为什么要选择框架?
- q* M/ B7 S! P3 H( m% N% [ 在开始比较这两个框架之前,我们应该先来了解下选择一个框架的决定因素都有什么每个开发人员选择一个框架之前,让我们看看选择的理由代码必须简单易懂应以更少的代码量产出更多的功能应提供一个布局合理的工作框架是否支持内置路由或外部插件的路由? / l2 F8 x v, }( A t8 V( n
应该能够在页面加载时传输更多数据,从而使页面成为单页应用,单页应用程序使用体验显然更好在单页架构中,如果用户需要共享应用子页面链接,那么框架应该具有基于URL路由不同功能的能力更严格的模板选项有助于实现双向绑定。 ' S$ ~/ M ~1 i u. }% `, F' A
不应与任何第三方库产生冲突应该很容易测试框架内的代码应为Ajax调用提供HTTP客户端服务文档也必不可少,应该是完整且最新应该与浏览器的最新版本兼容必须满足上述条件,便于APP的构建您必须确保所选择的框架符合条件。
2 v1 j7 v6 o% h. z. t4 j; e, f$ I Vue.js开发人员总是在寻找新的框架来构建他们的应用程序主要要求是速度快、成本低这个框架应该很容易被新开发人员理解并且能够以更低的成本使用其他考虑选项还有简单的编码方式、健全的帮助文档等在Web应用程序开发中,VUEJS在软件语言方面结合了很多优点。 # Z! y, C n7 D* @3 g9 v
VUE.JS的体系结构易于使用使用VUE.JS开发的应用程序很容易与新的应用程序集成VUE.JS是一个非常轻量级的框架你能很快的下载到它它也比其他框架快得多该框架的单文件组件性质也很棒这个尺寸使它很受欢迎。
0 m7 @+ a8 c: G' u' Z+ X) Z! N 同时你可以进一步减少它的体积使用Vue.js可以将模板和编译器分离为虚拟DOM您只能部署只有12 KB的压缩后的压缩解释器您可以在您的机器中编译模板Vue.js的另一个重要优点是它可以轻松地与使用JavaScript创建的现有应用程序集成。
* ?* {% j/ J% \5 L9 [0 Z6 ^ 使用此框架可以轻松地对已经存在的应用程序进行更改Vue.js还可轻松与其他前端库集成您可以插入另一个库,以弥补此框架中的任何不足此功能使该工具成为通用工具Vue.js使用服务器端渲染流的方法它使服务器具有较高的响应速度。 & n& [6 s) L) V& }
你的用户将很快获得渲染的内容Vue.js非常适合SEO由于该框架支持服务器端渲染,因此视图直接在服务器上渲染便于搜索引擎直接索引到这些网页内容但对你来说最重要的是你可以轻松地学习Vue.js该结构是基本的。 5 G, h+ { \- \4 @8 }4 i4 t
即使是新的开发人员,也会发现使用它来构建应用程序很容易该框架有助于开发大型和小型模板它有助于节省大量时间您可以返回并轻松检查错误除了测试组件外,您还可以返回并检查所有状态就任何开发人员而言,这是另一个重要功能。
, a5 {( A3 Z, P/ W, w* C! L Vue.js也有非常详细的文档它有助于为你快速上手开发应用程序您可以使用HTML或JavaScript的基本知识来构建网页或应用Vue.js它能与其他应用程序集成Vue.js轻巧且快速通过部署解释器,就可以使它更轻量。 % `; C$ {. J) v% w1 V4 c
您可以将编译器和模板分离为虚拟DOM得益于便于集成的优点,您可以使用它来对现有应用进行更改丰富的库和组件为你的应用程序带来更多可能应用能够快速响应服务器端渲染还有助于使搜索引擎排名更高结构简单易于任何新开发者使用。
: }1 p% `7 H4 L 您可以返回检查并更正错误您可以检查所有现有状态详细的文档有助于快速构建网页或应用程序Ember.jsEmber.js是MVVM模型框架它是开源软件该平台主要用于创建复杂的多页面应用程序它保持最新的特性,并不会丢弃任何旧功能。
1 r' Y. [3 z! Y/ T* z! x# C 通过这个框架,您必须严格遵循框架的体系结构JS框架是非常严密的组织所以它降低了和其他框架可能提供的灵活性它的平台和工具有非常完善的控制系统您可以使用提供的工具将其与新版本集成,以避免使用过时的API您可以轻松了解Ember的API。
% D2 \! `7 q, T 他们也很容易工作您可以简单,直接地使用高度复杂的功能当类似的工作一起处理时,性能更好它创建了相似的绑定和DOM更新,让浏览器一次性处理它们,以提高性能这样则将避免为每个工作重复计算,以免浪费大量时间因为Promise无处不在,所以你可以以简单的方式编写代码和模块,使用 Ember 的任何 API。 0 K) K9 r# M/ H
同时Ember也有一个很不错的上手指南上面记录着API的使用方式Ember明确了一般应用程序的组织和结构,因此你将不会犯任何错误你将不可能在不必要的情况下使程序复杂化Ember的模板语言是Handlebar,Handlebar简洁的语法可以使你可以轻松阅读和理解模板,同样的也能使页面加载速度变得更快。
2 g6 d/ m% ~8 y; O: |3 } 使用Handlebar另一个优势是,不必每次在页面上添加或删除数据时都更新模板语言本身将自动为你完成最后,Ember.js拥有一个活跃的社区,可以定期更新框架并从而促进向后兼容Ember.js是适用于复杂结构的多页应用程序的MVVM模型开源框架。 ) Q! O0 |. g# i. S# a
同时提供了最新功能和旧的功能它有一个非常严密的结构框架,不能提供太高的灵活性非常完善的控制系统可帮助你与新版本完美集成对避免使用过时的API版本有着严格的指导Ember的API可帮助您以简单的方式使用复杂的功能。
" @' f$ r% K8 Z+ S+ A n9 t4 { 该框架提供高效的运算机制,以保证运行效率Promise可让你使用Ember.js的任何API来编写模块化和简单的代码Ember.js是一个完全加载的前端框架框架稳定,因为所有组件都具有相同的功能和属性具有明确定义的限制,可防止您使应用程序复杂化
* \5 j% @% m& {0 p: [7 M* U/ k Handlebar使你可以轻松阅读和理解模板并且还有助于更快地加载模板每次添加或删除数据时,Handlebar将确保更新模板Ember.js有一个活跃的社区,可以定期更新框架并从而促进向后兼容Ember.js Vue.js对比
7 ]: U! K9 M, ~) I5 N( B; E 当你需要将原有应用程序向现代框架上迁移时,Vue.js可以为您提供帮助它结合了其他框架的许多优点Vue.js面向开发过程的框架,所以没有提供现成的界面元素库但是,许多第三方社区库可以为您提供帮助Ember.js为您提供了一个值得信赖的成熟框架。 5 q/ \6 e V) d& j7 i7 z1 A
当你的开发团队规模很大时,这个框架比较合适由于MVVM结构所致,它使每个人都可以为项目做出贡献Vue.js可以帮助你兼容应用程序中不同类型的语法,它有助于轻松编写代码,同时由于后端渲染,它也是一个对SEO友好的框架。
+ i' a2 p) \6 `) @ 而Ember是一个完全加载的前端框架,可以帮助您非常快速地开发应用程序但是它不适合开发小型项目很难说谁比谁更具优势选择哪个框架将取决于你实际参与的项目类型是什么两者都有其优缺点,所以我为大家总结了一张表,也许它能帮助你更好地进行对比:。
' D5 E0 V. P4 {/ Q9 I7 W( ^ 总结选择什么,取决于您要开发的应用程序这两个框架都在发展中两者也都在更新虽然Ember是一个全栈框架,但它太复杂了,很难应用于较小的项目而Vue.js凭借着轻盈的体量,易于上手的特点,使开发应用程序变得异常高效,从而获得了不少行业的开发者的青睐。
1 L& _' x+ K5 k2 i5 D6 i: j: } 此外,无论选择什么类型的框架,葡萄城都为广大开发者提供了兼容各类框架的开发组件,例如:SpreadJS纯前端表格控件和WijmoJS先进UI组件库 ,为开发者赋能本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网。
2 d c/ J2 a' D9 X% I. L9 S 适合做seo的vue框架每天进步一点点...之前的Vue项目使用过prerender-spa-plugin&vue-meta-info做seo,但对于博客类、新闻类的网站,详情页还是无法被爬取到,只能做固定的页面,今天把自己的Vue项目改造成Nuxt项目。
5 {9 c! r. w! e3 h3 y 效果预览:https://www.lpya.cn/一、前期准备1、首先使用以下命令安装nuxt项目npx create-nuxt-app demo安装时会出现类似Vue安装时出现的选项,自己根据需求选择就好
5 t4 j7 m" l: ~: e. Z/ N- U 选项2、使用下面命令安装依赖并启动项目,出现下面的就说明nuxt安装成功cnpm install npm run dev
& o- t9 c' w, U: M# E& J 效果图3、项目结构对比Vue项目,两个目录结构很相似,无非Vue是在src目录下,Nuxt是在根目录
/ \+ h" g5 ?' U% y' t9 ]% Y! _9 Y Vue与Nuxt结构对比二、如何修改1、main.js把Vue里面的main.js文件放到Nuxt根目录下,去掉new Vue({}),并在nuxt.config.js文件引入,其它不变//main.js文件 import Vue from vue import bus from "@/assets/bus/bus" Vue.prototype.$bus = bus; import VueCookies from vue-cookies Vue.use(VueCookies) import mavonEditor from "mavon-editor"; Vue.use(mavonEditor) Vue.prototype.$host = "
2 x, i6 J9 Z+ x$ z M* o https://www.lpya.cn" // new Vue({ // render: h => h(App), // }).$mount(#app) //nuxt.config.js export default { ... plugins: [ "@/main",//引入main.js,其它js文件基本上是在这里引入 ], } 5 d# |) d! Y- P) r5 Q/ @7 N5 a
2、store.js文件在store目录下创建index.js文件,引入后在页面直接this.$store调用//index.js export const state = () => ({ isHeader: false, }) const mutations = { isHeader(state, val) { state.isHeader = val; }, } export default { state, mutations } //nuxt.config.js export default { ... plugins: [ "@/store/index",//引入store ], }
' A# q$ |; ^' q9 l 3、组件1)把Vue components目录下的全部放到Nuxt components目录下就行,Nuxt的组件会自动注册,可以不使用import注册直接使用2)把组件复制过来后,可能会出现scss的错误(我Vue项目使用的是SCSS),使用下面命令安装
6 V/ N$ c. N3 U4 Q npm install --save-dev node-sass sass-loader @nuxtjs/style-resources配置SCSS的全局变量//nuxt.config.js export default { ... css: [ @/assets/scss/common.scss,//一般的可以放到这里 ], styleResources: { scss: ~assets/scss/app.scss, }, modules: [ @nuxtjs/style-resources, ], } 9 a# ~+ C" a; u0 w2 `' N5 A0 {
4、路由把Vue views目录下的全部放到Nuxt pages目录下,文件名就是路由,值得注意的是,传参的时候和Vue有一些不同比如我博客网站文章详情的路由是/detail,要传一个id过去,跳转链接可以写成下面这样。 . ? |0 H8 M& D0 v! n
现有的Vue项目改造成Nuxt项目并做SEO优化
% |+ k K- c8 O d2 i0 a 路由5、布局Nuxt可以自定义多个布局,比如说一个布局需要Header和Footer,一个布局不需要,另一个需要空白,我们可以在layouts定义布局,并在pages页面下调用即可export default { layout: function () { //index1是在layouts目录下创建的文件名,记得加上
5 C- h: N$ Z; f# J0 T return "index1"; }, }6、设置网站title使用head()给每个页面设置title和descriptionexport default { head() { return { title: "网页设计,模板分享,源码下载 - 糊涂博客", meta: [ { hid: "keywords", name: "keywords", content: "个人博客,网页设计,微信小程序,seo优化,源码下载,模板分享", }, { hid: "description", name: "description", content: "糊涂个人博客,一位编程爱好者的成长地。
. Y7 J! T& C4 J$ `+ L 专注于前后端的学习,不定期更新分享踩坑过程,学习记录、网页模板、demo源码等,也希望借此能够认识更多的朋友", }, ], }; }, }。 - @- `6 W4 F; g
三、SEO优化配置到这里,Vue项目基本上已经改造成Nuxt项目,但是和Vue的区别不大,详情页面还是无法被爬取到,这里我们需要使用asyncData,它可以在初始化页面前先得到数据,然后设置title。 + {! x# } S, ]# k& A: O. N G
其它作用可以自己查//详情页面 import { articleDetail } from "@/assets/api/api"; export default { asyncData({ app, params }, callback) { return articleDetail(params.id).then((res) => { const { code, data } = res; if (code === 1) { app.head.title =data.title; const meta = [ { charset: "utf-8", }, { name: "viewport", content: "width=device-width, initial-scale=1", }, { hid: "keywords", name: "keywords", content:data.keywords, }, { hid: "description", name: "description", content: data.content, }, ]; app.head.meta = meta; } callback(null, {}); }); }, }
9 g: X6 R' | }* T' s/ R# i 四、项目部署1、使用下面命令打包项目,会创建.nuxt目录,把下面文件放到服务器上npm run build
& `& H. {- _0 f$ W/ C; M 需要部署的文件2、使用下面命令安装依赖并运行cnpm install npm run start * g; H! {" R" ?1 ]! O
运行3、配置域名访问,我使用的是bt面板,找到配置文件在里面添加下面内容,使用域名就可以访问刚部署的内容了upstream lpya { server 0.0.0.0:7000; } server { location / { proxy_pass % ]/ c# H& t5 L. [
http://lpya; proxy_set_header Origin ; index index.html index.htm; } }4、如果我们关闭终端,服务就关闭了,现在需要开户守护进程,让它在后台一直运行,创建pm2.config.json文件
9 z: W" z1 V5 @3 m" ?- u2 V( i { "apps": { "name": "sever", "script": "npm run start", "ignore_watch": [ "node_modules" ] } } //然后运行 //pm2 start pm2.config.json启动 //pm2 stop pm2.config.json关闭
5 j' ^+ y4 H% u0 q" j* E" ^7 ` 五、爬取效果使用bd站长工具的抓取诊断,可以查看做之前和之后的一个对比。下图可以明显看出,没改之前只能抓取到固定的信息,改之后可以动态抓取到内容(重点是使用了asyncData) , G% J) H% ` E" Z/ z4 `+ m/ c
前后对比六、sitemap.xml网站地图Sitemap可以方便我们告诉搜索引擎网站上有哪些可供抓取的网页1、使用命令安装@nuxtjs/sitemapnpm install @nuxtjs/sitemap。 1 c6 f/ Y. c; ~" h8 b
2、创建config目录,并在里面添加sitemap.js文件//sitemap.js import axios from axios const sitemap = { path: /sitemap.xml, hostname:
5 {) D5 E. {- N G https://www.lpya.cn/, cacheTime: 1000 * 60 * 60 * 24, gzip: true, generate: false, exclude: [ /404 ], defaults: { changefreq: daily, lastmod: new Date() }, routes: async () => { const getUrl = `
0 W! t) b. @5 V5 t& l1 D/ R ^ https://www.lpya.cn/article/get` let res = await axios.post(getUrl) let { data } = res.data let routes = [{ url: "/", changefreq: "daily", lastmod: new Date() }] if (data.length !== 0) { //拼接 let arr = data.map(item => ({ url: "/detail/" + item.id, lastmod: item.created_at, changefreq: "daily" })) routes.push(...arr) } return routes } } export default sitemap & x9 R& S# K8 r( W& H6 {4 C
3、在nuxt.config.js引入,部署时记得把config目录也上传服务器//nuxt.config.js import sitemap from "./config/sitemap" export default { ... modules: [ @nuxtjs/style-resources, ], sitemap: sitemap,//调用 }
# a) \9 d5 r- O) J" s' e; ] 4、部署后访问https://.../sitemap.xml链接就可以查看效果
& E0 {& F; Z" A; A5 o sitemap七、总结虽然看起来多,实际也就几步操作,我也是第一次接触nuxt,有些地方可能弄不好或许也有更好的方法,有大神知道的可以吱一声[灵光一闪]有需要的可以自己慢慢尝试,bug总会被解决的(或许[流泪])。
2 D* a) D% h! w- ^% p" Y 适合做seo的前端框架当你将长期存在的后端整体,细分为各种微服务时,就可以在后端的开发过程中获得更加有效也更具规模的新事物然而,大多数前端应用程序如今仍然独立存在很难变得更加高效,与此同时,对于前端发展进程的规模化也具有同样的意义。
' m0 E: L1 ~" ?! r4 _' l; _ 微前端就是要将前端整体细分为更小、更容易进行管控的片段每个部分都可以端到端地拥有自己的功能,可以在自身的代码库中工作、独立发布版本、可以不断地进行小的增量升级,并且还可以通过API与其他部分进行集成,以便共同对页面和应用程序进行创作和管理。 8 {( t- X" _' g; O
有许多方法可以构建微前端,从组件的智能构建时集成,到使用自定义路由的运行时集成在这篇文章中,我收集了许多杰出的工具,来帮助我们构建微前端欢迎您在评论区发表建议提供或反馈!1BitBit允许你从独立的组件进行构建并管理前端,它可能是最受欢迎的,并且可以立即投入生产的解决方案。 k" f& b/ u& n' r0 N' x4 a" m
如果你查看bit.dev 主页,你就会发现,它是由很多独立的组件构成,这些组件由不同的团队,在不同的代码库中构建,并且最终集成在一起。
- V l+ c: X7 P6 X ]* t% K Bit CLI是用于组件驱动开发,并且广泛流行的工具通过Bit,你可以一起构建、创立并集成独立的组件尽管微前端通常被认为是一个发生在运行时的组合,但是Bit也让开发者在构建时高效地组合前端,以享受两方面的优势:一方面是对于“传统整体”的安全性和健壮性,另一方面可以简化微前端,并且使其具有可扩展性。
1 l2 J* t$ Z8 F& y, h 使用Bit,在于其他团队合作的同时,不同的团队可以对他们的组件进行独立的构建、发布和公开。这样就可以将web开发过程转变为功能和组件的模块化组合。 4 p" r4 \! j, U0 Y
除了用于组件驱动开发的OSS工具外,Bit还为团队提供了一个云平台,让团队可以构建变更并在组件上进行协作,以便可以高效地管理和扩展开发过程,与此同时保持所有团队完全独立以自主交付为了确保每个前端都有自己独立且快速的构建流程,Bit还提供了独特的CI / CD流程,该流程100%由组件驱动,这意味着不同的团队可以安全地进行集成更改,不必等待、争夺主控权或打破任何东西。
% l2 o# m, j5 H Q 开发人员可以持续并且安全的避让所有受影响的应用程序,从而将更改传播到组件中
5 \4 b( S" h1 ]7 ^* e 结果就是,工作流通过简单的解耦代码库、自治团队、体积较小却定义良好的API,独立发布渠道, 并且持续地进行增量更新如果你的团队正在通过组件进行构建,并且正在寻找一种可以在大型应用程序上解锁微前端和模块化工作的解决方案,请一定要查看Bit的OSS工具和平台,它可能正是你需要的。
& D8 U! d( ?$ X( `) N/ u) ^* ? 2Webpack 5 和 Module Federation多个单独的构建最后要形成一个单独的应用程序这些独立的构建不应相互依赖,因此可以单独开发和部署Module Federation是由Zack Jackson建立的JavaScript架构,并在后来提出为其创建Webpack插件。 . Y# G6 B% X$ l# \2 w1 G) R
Webpack团队帮助它将该插件引入了Webpack 5,目前处于测试阶段简而言之,Module Federation允许JavaScript应用程序在运行时从另一个应用程序动态导入代码该模块将建立唯一的JavaScript条目文件,能够通过设置webpack配置,使其他应用程序可以下载该文件。 ! R, w) B- Z- R% I- F
它还通过启用依赖关系共享,来解决代码依赖关系和增加包大小的问题例如,如果你要下载React组件,那么你的应用程序就不会两次导入React代码该模块将巧妙地使用你已经拥有的React源,仅导入组件代码最后,如果导入的代码由于某种原因失败,则可以使用React.lazy和React.suspense提供备用功能,以确保用户体验不会因构建失败而中断。
& [$ O e+ Q' J. e 这个架构释放了构建微前端真正巨大的潜力3Single SPASingle SPA 将自己定义为:微前端的JavaScript框架简而言之,它将生命周期运用到了每一个应用程序每个应用程序都可以响应url路由事件,并且必须知道如何从DOM引导,安装和卸载自身。
" j% V8 e; f+ f% l8 C- W; V 传统SPA和Single SPA应用程序之间的主要区别在于它们必须能够与其他应用程序共存,并且它们各自没有自己的HTML页面4SystemjsSystemjs并不是微前端的框架,但是它提供了独立模块跨浏览器管理的解决方案。 5 `$ ~# Y7 N* K( Q! C+ D5 g: B$ ^
这种方案正是实施MF的关键(实际上也被用于Single SPA)Systemjs被看做JS模块的协调器,它能够让我们运用不同的JS模块连接的特点,例如动态导入、导入映射等等,而不是依赖于本地的浏览器支持——在以上方面,Systemjs都具有接近本地的性能。
2 R# J! B& c) R9 r# O+ k 一些值得注意的功能包括适用于老版本浏览器的Polyfill,使用名称的模块导入(通过将名称映射到路径),和对多个JS模块单个的网络请求(通过使用它的API,将多个模块设置为单个文件)Systemjs还可轻松访问“模块注册表”,能够让你随时了解到浏览器中的可用模块。 0 _1 F/ m- C# ^
5PiralPiral的目标是让你轻松通过微前端建立一个门户应用,它能够确保你能够创建一个模块化的应用程序,并且利用微前端体系结构,在运行时使用被称为“pilets”的解耦模块进行扩展“pilet”能够独立开发,并附带着必要的代码和其他相关资源。
% Z3 a, s- M _4 S 这种前提条件非常不错,开发人员只需要安装使用你最喜欢的编辑器,终端,网络浏览器和Node.js即可你可以在本地开发计算机上的仿真器中,执行和调试Piral instance(应用程序外壳)和pilet(功能模块)。 8 z# u' _: D# A, d6 c ~' U& @
6Open ComponentsOpen Components宣布他们的目标是“让前端世界中无服务器”更具体地说就是,Open Components的目标是成为一个一站式微前端框架,从而使其成为一个丰富而复杂的系统,其中包括从组件处理、注册表,到模板,甚至包括CLI工具在内的各种工具。
" F. p6 f3 S9 V. L; g& d$ o, | Open Components有两个部分:第一,components是同构代码的小单元,主要由html,css,js组成它们可以选择包含一些逻辑,从而允许服务器端的node.js应用程序组成一个用于呈现视图的模型。 ( N. ]( e5 N' b/ O1 ~- K L5 M4 i
经过渲染后,它们是纯HTML片段,可以插入到任何html页面中第二,consumers是网站或微型网站(小型的可独立部署的小型网站,都通过前门服务或任何路由机制连接),它们需要将components用于在其网页中,以此呈现部分内容。 & F7 T* Q' ^6 z6 o: p' T. j+ E
7QiankunQiankun宣称他们是“一个基于single-spa的微前端实现,但它已经可以投入生产了”,它的目标是解决一些,从小型子应用程序构建大型应用程序过程中,可能会面临的一些主要问题,比如发布静态资源,整合单个的子应用程序,确保子应用程序在开发和部署过程中彼此独立,运行时相互隔离,从而处理公共依赖性,处理各种性能问题等。
$ {4 X4 Z* c# ~# @/ e0 V 8LuigiLuigi是一个微前端JavaScript框架,可以让你创建由本地和分布式视图驱动的管理用户界面Luigi允许Web应用程序与应用程序包含的微型前端进行交流与通信为确保通信的交流顺利进行,你可以对路由,导航,授权和UX元素等进行配置。
0 G4 P9 j9 L- I( z% Z3 R5 | Luigi由Luigi Core应用程序和Luigi 客户端库组成。他们使用postMessage API在核心应用程序和微前端之间建立安全的通信。
' z$ g3 S) m4 f/ e+ I8 r/ X, o 9FrintJSFrintJS是一个“用于构建可伸缩和响应式应用程序的模块化JavaScript框架”你可以用它加载来自不同bundlers的应用程序,为应用程序提供结构,并处理诸如路由,依赖关系以及其他问题。
! B- ^0 ] S6 f: o, B( C* Q FrintJS还可以通过其他程序包支持RN和Vue,但主要是对React进行记录和测试
& L2 p$ c, ]; {# Q' n 10 Mosaic 9 % ~) P! B7 z$ p! t; U6 ?
Mosaic 9是一组服务、库,以及一个定义了它组成部分之间如何进行交互的规范,以支持大型网站的微服务样式架构,由一些处理不同需求,比如路由、布局、模板存储、甚至展示UI的软件包组成Mosaic运用的这些片段提供独立的服务,并且根据模板定义,在运行时将他们组合在一起。
- v+ V9 s& {; ^: b8 T 11PuzzleJSPuzzleJS是一个“用于可扩展和快速网站微前端框架”,允许你创建和一个相互对话的网关和店面项目。它的灵感来自Facebook的BigPipe,并且朝着微前端的方向发展。 # p B6 {: Y) ]+ j3 Q+ [9 W
PuzzleJS可以提供的功能包括创建一个网关,或者店面(彼此独立),同时也可以通过提供一个组态文件把它们连接起来它使你可以在编译时将html模板编译为javascript函数由于这种操作完全与请求相独立,因此PuzzleJ可以通过这种功能发送第一个组块。 ; K, {- g+ I5 h) h& a+ e
它也是SEO友好的,已在服务器端进行了准备和渲染而且,当片段所需的API出现故障时,PuzzleJs也保证其他页面片段仍然可以正常工作适合做seo的vue框架JavaScript最初是为Web应用程序创建的。
. l3 C! J. A- {* {' [5 Q7 f0 f 但是随着前端技术的发展,大多数开发人员更喜欢使用基于JavaScript的框架它简化了你的代码以及使你能完成更多全栈工作,您几乎可以在任何框架中使用JavaScript使用什么类型的框架决定了创建应用程序的便捷程度。 d- b: E+ t3 \0 c! A" e
因此,您必须慎重选择在已经足够复杂的前端环境里,其中两个框架脱颖而出我们会在本文中对Ember.js和Vue.js之间进行对比,以帮助你更好的做出判断 v1 a, k/ w2 r0 l9 i
为什么要选择框架?在开始比较这两个框架之前,我们应该先来了解下选择一个框架的决定因素都有什么每个开发人员选择一个框架之前,让我们看看选择的理由代码必须简单易懂应以更少的代码量产出更多的功能应提供一个布局合理的工作框架。
. k; k& z! J/ F 是否支持内置路由或外部插件的路由?应该能够在页面加载时传输更多数据,从而使页面成为单页应用,单页应用程序使用体验显然更好在单页架构中,如果用户需要共享应用子页面链接,那么框架应该具有基于URL路由不同功能的能力。
7 G: B2 c, ]% l& M 更严格的模板选项有助于实现双向绑定不应与任何第三方库产生冲突应该很容易测试框架内的代码应为Ajax调用提供HTTP客户端服务文档也必不可少,应该是完整且最新应该与浏览器的最新版本兼容必须满足上述条件,便于APP的构建。
+ k; A7 O4 A" z' T" E- c 您必须确保所选择的框架符合条件Vue.js开发人员总是在寻找新的框架来构建他们的应用程序主要要求是速度快、成本低这个框架应该很容易被新开发人员理解并且能够以更低的成本使用其他考虑选项还有简单的编码方式、健全的帮助文档等。
) b, Q8 T, A) ]$ N. E5 t8 T 在Web应用程序开发中,VUEJS在软件语言方面结合了很多优点VUE.JS的体系结构易于使用使用VUE.JS开发的应用程序很容易与新的应用程序集成VUE.JS是一个非常轻量级的框架你能很快的下载到它它也比其他框架快得多。
- W, V' }1 u6 G( _2 J 该框架的单文件组件性质也很棒这个尺寸使它很受欢迎同时你可以进一步减少它的体积使用Vue.js可以将模板和编译器分离为虚拟DOM您只能部署只有12 KB的压缩后的压缩解释器您可以在您的机器中编译模板Vue.js的另一个重要优点是它可以轻松地与使用JavaScript创建的现有应用程序集成。
# {# g4 f* F( f& g5 { 使用此框架可以轻松地对已经存在的应用程序进行更改Vue.js还可轻松与其他前端库集成您可以插入另一个库,以弥补此框架中的任何不足此功能使该工具成为通用工具Vue.js使用服务器端渲染流的方法它使服务器具有较高的响应速度。
. B: p+ ?' d0 G/ X1 \ 你的用户将很快获得渲染的内容Vue.js非常适合SEO由于该框架支持服务器端渲染,因此视图直接在服务器上渲染便于搜索引擎直接索引到这些网页内容但对你来说最重要的是你可以轻松地学习Vue.js该结构是基本的。
, B# U0 \! V* O f+ B" h9 g 即使是新的开发人员,也会发现使用它来构建应用程序很容易该框架有助于开发大型和小型模板它有助于节省大量时间您可以返回并轻松检查错误除了测试组件外,您还可以返回并检查所有状态就任何开发人员而言,这是另一个重要功能。
. d+ s; a' ]/ X! \ Vue.js也有非常详细的文档它有助于为你快速上手开发应用程序您可以使用HTML或JavaScript的基本知识来构建网页或应用Vue.js它能与其他应用程序集成Vue.js轻巧且快速通过部署解释器,就可以使它更轻量。
- w# n- V* H6 q5 |8 n, ` 您可以将编译器和模板分离为虚拟DOM得益于便于集成的优点,您可以使用它来对现有应用进行更改丰富的库和组件为你的应用程序带来更多可能应用能够快速响应服务器端渲染还有助于使搜索引擎排名更高结构简单易于任何新开发者使用。
6 L+ D( Z+ @% q' `' @ 您可以返回检查并更正错误您可以检查所有现有状态详细的文档有助于快速构建网页或应用程序Ember.jsEmber.js是MVVM模型框架它是开源软件该平台主要用于创建复杂的多页面应用程序它保持最新的特性,并不会丢弃任何旧功能。 0 U j% W1 u$ O& q2 Y: y
通过这个框架,您必须严格遵循框架的体系结构JS框架是非常严密的组织所以它降低了和其他框架可能提供的灵活性它的平台和工具有非常完善的控制系统您可以使用提供的工具将其与新版本集成,以避免使用过时的API您可以轻松了解Ember的API。
: e% k( i6 D3 {$ b& v5 O; V 他们也很容易工作您可以简单,直接地使用高度复杂的功能当类似的工作一起处理时,性能更好它创建了相似的绑定和DOM更新,让浏览器一次性处理它们,以提高性能这样则将避免为每个工作重复计算,以免浪费大量时间因为Promise无处不在,所以你可以以简单的方式编写代码和模块,使用 Ember 的任何 API。
6 ~* ]- a! w% V, g; S 同时Ember也有一个很不错的上手指南上面记录着API的使用方式Ember明确了一般应用程序的组织和结构,因此你将不会犯任何错误你将不可能在不必要的情况下使程序复杂化Ember的模板语言是Handlebar,Handlebar简洁的语法可以使你可以轻松阅读和理解模板,同样的也能使页面加载速度变得更快。
% H; {8 w+ b) h# P- d: u* R 使用Handlebar另一个优势是,不必每次在页面上添加或删除数据时都更新模板语言本身将自动为你完成最后,Ember.js拥有一个活跃的社区,可以定期更新框架并从而促进向后兼容Ember.js是适用于复杂结构的多页应用程序的MVVM模型开源框架。
7 l; P! M0 T) h4 E% ?6 E, o 同时提供了最新功能和旧的功能它有一个非常严密的结构框架,不能提供太高的灵活性非常完善的控制系统可帮助你与新版本完美集成对避免使用过时的API版本有着严格的指导Ember的API可帮助您以简单的方式使用复杂的功能。 . `! c3 R; r$ x/ \3 \/ k0 W
该框架提供高效的运算机制,以保证运行效率Promise可让你使用Ember.js的任何API来编写模块化和简单的代码Ember.js是一个完全加载的前端框架框架稳定,因为所有组件都具有相同的功能和属性具有明确定义的限制,可防止您使应用程序复杂化
& }, u3 A5 a: F Handlebar使你可以轻松阅读和理解模板并且还有助于更快地加载模板每次添加或删除数据时,Handlebar将确保更新模板Ember.js有一个活跃的社区,可以定期更新框架并从而促进向后兼容Ember.js Vue.js对比 ; ?$ ~( e; y5 b/ q2 z1 H# ^
当你需要将原有应用程序向现代框架上迁移时,Vue.js可以为您提供帮助它结合了其他框架的许多优点Vue.js面向开发过程的框架,所以没有提供现成的界面元素库但是,许多第三方社区库可以为您提供帮助Ember.js为您提供了一个值得信赖的成熟框架。
. H; X# _. ^ r& v" k 当你的开发团队规模很大时,这个框架比较合适由于MVVM结构所致,它使每个人都可以为项目做出贡献Vue.js可以帮助你兼容应用程序中不同类型的语法,它有助于轻松编写代码,同时由于后端渲染,它也是一个对SEO友好的框架。 9 n6 N" [5 `. ^1 `% G
而Ember是一个完全加载的前端框架,可以帮助您非常快速地开发应用程序但是它不适合开发小型项目很难说谁比谁更具优势选择哪个框架将取决于你实际参与的项目类型是什么两者都有其优缺点,所以我为大家总结了一张表,也许它能帮助你更好地进行对比:。 / Z- m: |" ?0 w
总结选择什么,取决于您要开发的应用程序这两个框架都在发展中两者也都在更新虽然Ember是一个全栈框架,但它太复杂了,很难应用于较小的项目而Vue.js凭借着轻盈的体量,易于上手的特点,使开发应用程序变得异常高效,从而获得了不少行业的开发者的青睐。 # P3 Q7 w3 J4 u W: d: I
此外,无论选择什么类型的框架,葡萄城都为广大开发者提供了兼容各类框架的开发组件,例如:SpreadJS纯前端表格控件和WijmoJS先进UI组件库 ,为开发者赋能本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网。
/ N2 a8 O+ n/ J, {) ^, |7 n7 N5 V; [) L z" j* O
, d: Q' I; G! j0 {6 \1 H" `
$ F' O( M$ |& u* F" y& T3 C
$ S1 e: z5 S- p# @4 } |