您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

区块管理JavaScript框架,用简单的方式构建复杂的页面

时间:2022-05-13 11:24:08  来源:  作者:GitHub精选

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是前端页面区块管理框架——Magix。

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

随着前端领域的不断发展,现代的网站变得越来越庞大,页面变得越来越复杂。在这个情况下,Magix以将站点分离为一个个页面,将页面分离成一个个区块的思想,用区块连接的方式使用一个个相互独立的区块来构建页面,让无论多复杂的页面都能像拼拼图一样,实现化繁为简。

 

功能特性

  • 简单易用:采用最原汁原味的语法,只要掌握htmlcssJAVAscript即可开箱即用
  • 高效率:区块之间相互独立,意味着在任何地方都可复用定义好的区块,让工作事半功倍
  • 面向未来:针对复杂庞大的项目时,Magix天然的微前端架构,经过简单配置,让独立的项目也如区块一般顺滑接入

magix适合什么项目

  • Magix适合做单页应用(SPA)的项目,最初的设计目标也是做单页应用的
  • Magix也可以做传统的展示型页面,当页面越复杂时,用Magix越值得
  • 也可以只把页面上某一块应用Magix,不要求是整个页面
  • Magix不支持多个实例,即同一个页面只能有一个Magix存在。即使如此,Magix仍然可以与别的框架混用。甚至页面上某几块想用Magix的功能也是可以的,Magix具有高自由度和可拓展性
区块管理JavaScript框架,用简单的方式构建复杂的页面

 

安装

magix的使用目前依赖脚手架工具thx-cli,因此magix项目的开发、环境运行、打包编译等功能都需要在thx-cli的基础之上。

首先我们需要在全局先安装thx-cli

// npm
npm install -g thx-cli

// yarn
yarn global add thx-cli

thx-cli在安装完成后会注册thx作为全局命令,我们可以直接使用thx <command>[options]来进行使用

因此我们可以使用thx -v命令来验证是否安装成功,如果显示了版本号则表示安装成功

应用初始化

在安装完成thx-cli之后,我们就可以开始应用的初始化了。

我们可以使用thx init这个命令来进行应用的初始化。如果我们是第一次进行应用的初始化,thx-cli会提示安装magix相关的套件(thx-kit-magix),如下:

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

在安装好套件之后,选择我们初始化的模板

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

最后输入应用名称

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

应用的运行与打包构建

本地运行开发

thx-cli提供了dev命令用于应用的本地运行开发,在成功启动应用后会自动打开浏览器

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

打包构建

thx-cli同样也提供了build命令用来对应用进行打包构建,构建后的文件输出在build目录下

区块管理JavaScript框架,用简单的方式构建复杂的页面

 


区块管理JavaScript框架,用简单的方式构建复杂的页面

 

View基础

View的组成

和原生的前端开发一样,view通常也是由三个文件构成的:

  • html文件:模版文件,结合数据渲染出页面
  • css文件:样式文件,当前页面相关的样式
  • JavaScript文件:必不可少的文件,承担所有逻辑的执行

在编译器的支持下,其中css文件可由less文件替代,同时也支持了typescript。并且针对不同的区块功能差异,html文件与css文件也并非是必须的,例如:在当前的view只是提供功能上的拓展时,与模版、样式上的需要时,便允许只有一个js文件

那么这三个文件是通过什么来进行连接的呢?答案是:@:占位符

接下来请看具体示例:

当一个view相关文件的结构为:

- index.ts
- index.html
- index.less

在index.ts文件中的代码如下:

import Magix from 'magix'

// 关联样式文件
magix.ApplyStyle('@:./index.less')

export default Magix.View.extend({
  tmpl:'@:./index.html' // 关联html文件
  assign(extra) {
  	this.set(extra)
	},
  async render() {
    awAIt this.digest()
  }
})

可见,@:占位符的重要性,但它并非只有连接文件的功能,还有比如:引入css变量等功能。


View中数据渲染

我们在前面提到,html文件中会结合js文件中的数据来渲染页面,这又是怎么实现的呢?首先我们需要了解的是每个view都有一个数据对象。相信你在前面的代码中已经看到了这两个函数:this.set()、this.digest()。这两个函数便是对数据对象进行操作。

其中set函数的作用是设置view中的数据,当调用该函数时传入一个对象,该对象就会被混入到当前view的数据对象中。

而digest函数的功能为渲染视图,将模版转化为真正的dom。它也同时支持接收一个对象作为参数,表示设置数据并同时渲染视图。

this.set({username:123}).digest()
// 等同于
this.digest({username:123})

当html文件中的模版获取到动态的数据后,接下来只需要使用简单的模版语法就能将其渲染出来:<div>{{= username}}</div>。最终该节点的渲染结果为<div>123</div>


View之间的连接

我们已经了解了一个view的组成与渲染了。那不同的view之间又是怎么建立起联系的呢?magix是怎么做到区块之间的灵活使用的呢?

现在我们举个例子:有两个view,分别为a和b,我们想要在a中展示b,也就是我们想要在a中引入b,该怎么做呢?

假设目录结构如下:

- a.ts
- a.html
- a.less
- b.ts
- b.html
- b.less

在这里我们就要介绍一个属性了mx-view,magix就是通过该属性来将不同的区块进行连接。具体比如在a中引入b,只需在a.html中这样写即可:<div mx-view="@:./b"></div>

或者你也可以使用magix自带的标签来实现:<mx-vframe src="@./b" />,经过编译器的编译后,也会被编译的与前者相同。同样的,组件库中的组件,在经过编译后,也会变为<div mx-view=" "></div>这种形式的节点。

 

示例

父子组件通信

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

动态挂载view

区块管理JavaScript框架,用简单的方式构建复杂的页面

 

 

—END—

开源协议:MIT

开源地址:
https://github.com/thx/magix



Tags:JavaScript框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
2023年流行的五大JavaScript框架
译者 | 布加迪审校 | 重楼Stack Overflow在2023年5月进行了年度开发者调查,以了解开发者在使用什么工具、他们如何学习这些工具以及他们的看法。超过9万名开发者参与了这次调...【详细内容】
2023-06-28  Search: JavaScript框架  点击:(266)  评论:(0)  加入收藏
Alpine.js简介:用于最小化列表的JavaScript框架​
译者 | 李睿审校 | 孙淑娟前端JavaScript框架的创新是当今这个时代最伟大的技术文化现象之一。20多年来,人们见证了进化创造力的长尾。每一个新的想法都进行尝试,在软件开发过...【详细内容】
2023-04-04  Search: JavaScript框架  点击:(281)  评论:(0)  加入收藏
什么是JavaScript框架?它们是如何工作的?
在计算机编程中,框架是程序员构建软件的基础。类似的,JavaScript框架为程序员提供了方便的基础。它提供了一组预先编写的代码,这样程序员就不需要从头开始了。因此,他们可以将框...【详细内容】
2023-03-08  Search: JavaScript框架  点击:(190)  评论:(0)  加入收藏
如何为网站选择最佳的JavaScript框架?
我们都知道JavaScript框架对于优化整个网站开发过程有多么重要,企业可以节省时间、精力和金钱。没有一个框架适合所有任务,每一个都有其优点和缺点,应该根据项目的需要进行选择...【详细内容】
2023-02-02  Search: JavaScript框架  点击:(117)  评论:(0)  加入收藏
怎么选择合适的JavaScript框架
即使在今天,JavaScript仍然是web开发的主导语言。但是所有不同的框架都有其独特的特性、优点和缺点,在做出选择时必须牢记这些。在决定框架之前,必须明确网站或应用程序的具体...【详细内容】
2022-12-16  Search: JavaScript框架  点击:(203)  评论:(0)  加入收藏
什么是JavaScript框架?有什么作用?
有许多最好的 JavaScript 框架可供 Web 开发人员使用,它们各有利弊。JavaScript 框架为 JavaScript 开发人员提供了开发 JavaScript 应用程序所需的基本基础。这为 JavaScrip...【详细内容】
2022-08-10  Search: JavaScript框架  点击:(414)  评论:(0)  加入收藏
区块管理JavaScript框架,用简单的方式构建复杂的页面
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是前端页面区块管理框架&mdash;&mdash;Magix。 随着前...【详细内容】
2022-05-13  Search: JavaScript框架  点击:(391)  评论:(0)  加入收藏
2020年JavaScript框架性能比较
JavaScript框架之间的终极性能之战 我在网上浏览时发现,两年多来我们没有一个不错的JavaScript框架性能大赛。因此,在2020年总结之前,让我们在将这些库相互抗衡中获得一些乐趣...【详细内容】
2020-12-24  Search: JavaScript框架  点击:(404)  评论:(0)  加入收藏
排名前5的JavaScript框架
领先的JavaScript框架和库如何随着时间变化并走向未来> Photo by Victoriano Izquierdo on Unsplash每年,科技行业都在快速发展。基于受欢迎程度及其全面性,出现了不同的趋势...【详细内容】
2020-11-25  Search: JavaScript框架  点击:(271)  评论:(0)  加入收藏
5大常用jquery插件,JavaScript框架小常识
jquery可以被视为Web开发的脊梁骨,jquery是一个快速简洁的javascript库,它简化了HTML文档、事件处理、动画制作和Ajax交互,以实现快速的Web开发。 jquery插件通过使Web应用程序...【详细内容】
2019-07-10  Search: JavaScript框架  点击:(1142)  评论:(0)  加入收藏
▌简易百科推荐
Qt与Flutter:在跨平台UI框架中哪个更受欢迎?
在跨平台UI框架领域,Qt和Flutter是两个备受瞩目的选择。它们各自具有独特的优势,也各自有着广泛的应用场景。本文将对Qt和Flutter进行详细的比较,以探讨在跨平台UI框架中哪个更...【详细内容】
2024-04-12  刘长伟    Tags:UI框架   点击:(7)  评论:(0)  加入收藏
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(11)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(23)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(62)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(52)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(43)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(58)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(72)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(95)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(91)  评论:(0)  加入收藏
站内最新
站内热门
站内头条