读xui,学JavaScript(0)

在今年5月份的时候,我通读了xui的源代码,并完成了对代码文档和注释的翻译工作。本来是想用于公司内部分享,但由于种种原因,最终没有成型。最近有了时间,也有了合适的工具,所以打算把这个系列完成,并放到网上和大家分享。

适合人群

会某种面向过程或面向对象编程语言,并且一直在以使用该语言的方式使用JavaScript的人。这样的人在我身边为数不少——没有系统性的学习过JavaScript,按照已有的编程知识,想当然的使用JavaScript,甚至认为JavaScript就是这样的——我也曾是其中之一。但JavaScript远比我们所了解的更强大。希望这个系列能帮助大家更好的了解和使用JavaScript,写出好代码。

为什么选择xui

Xui 是一个用于开发手机网络应用的,极其轻量、极度易用、高度模块化的JavaScript框架。使用起来和jQuery有点类似,但只包含了最实用的部分。

它的核心代码量很少,因为它的设计思路是这样的:首先建立一个核心项目core,只支持那些最符合标准的浏览器;然后在core的基础上开发ie和bb分支,分别支持ie浏览器和黑莓的浏览器。这样,在那些符合标准的浏览器中,就不用载入一些hack代码,使框架的核心保持简洁和高效。这个系列所使用的所有源代码都是属于核心分支core的。

因此,使用xui,我们只需阅读少量的代码就可以了解一个功能全面的完整框架的实现,并学会JavaScript那些最“时髦”和“高端”用法。

文件结构和介绍的顺序

核心分支是根据 util/profiles/core.js 编译而成的,下面是它的源代码。

{
    out: "lib/xui", //<1>
    include: [ //<2>
        "src/header",
        "src/base",
        "src/js/dom",
        "src/js/event",
        "src/js/fx",
        "src/js/style",
        "src/js/xhr",
        "packages/emile/emile",
        "packages/domready/ready",
        "src/footer"
    ]
}

<1> 为编译脚本指明编译后的文件存放的位置和名称。

<2> 编译脚本会根据include中包含的文件将这些文件依次串联起来,然后根据参数决定是否压缩,并形成最终的xui.js。

在这个系列里,我们要阅读的就是include中所包含文件的源代码(其中packages目录下的是xui所使用的两个第三方库,我们只做相应介绍,并不讲解其源代码)。然后根据JavaScript特性在源代码中出现的顺序一一介绍。如果发现有些知识点过于简单,或者早已了解,你可以直接跳过它,而不会影响对后续内容的阅读,我会尽量做到让它们独立。

最后,非常欢迎各种批评指正。让我们一起改进这个系列的质量,以帮助更多的人。

更多

我的第一个MCP,以及开发过程中的经验感悟

起心动念 上周开发完 sheetex 后,发了条朋友圈。有小伙伴建议搞个 MCP 玩,正好我本来也想学,于是这周就花了一天完成了 sheetex-mcp-server,一个将对话中生成的表格保存成 Excel 的 MCP 服务。 做之前快速调查了一下 smithery 和 modelscope ,发现已经有好几个 Excel 相关的:实现上既有调用本机上的 Office 软件进行操作的,也有用库读写文件的;功能就更加眼花缭乱,从简单读写数据,到插入图表,甚至可以截图保存。 看来是打不过了,好在只是做个练习,开搞。 一天下来,学到不少东西,也填了好几个坑,本文以坑为主。 那么下面就按顺序来了。 新手上路 Build an MCP Server 是官方的教程,新手入门刚刚好,它通过调用天气相关的接口演示了 MCP Server 的开发过程。

By 熊立丁

12KB的Excel导出库sheetex是怎么来的

这是一个关于前端 Excel 导出库 sheetex 的故事:我为什么要做这个库,它为什么会这么小,以及你是否值得一试。 如过你问我“为什么非要在前端导出”,那将是另一个故事。 我的数据导出史 不知道你是否还记得自己是从什么时候开始接触数据导出的? 我对自己的“数据导出史”还算有些印象:在还没有正式工作的时候,如果有人问我要数据,我会在数据库管理工具里写个查询语句,然后视对方的用途,导出成SQL 语句、CSV 文件或者Excel 等;待到工作了,需要开发面向最终用户的系统,就不能再这么手工处理,导出功能成为系统标配,用户点击一个按钮,就要下载到相应的文件。 最早是 CSV 格式,因为其生成相对容易,而且也可以通过 Excel 软件进行查看,加上主要是内部用户,偶有无法打开也只要简单培训就能解决。 但随着用户类型变得广泛起来,这种“偶尔”也逐渐变成无法忍受,那么干脆直接导出 Excel 文件吧,反正开源库也已经成熟,于是使用 SheetJS

By 熊立丁
浙ICP备15043004号-1