当前位置: 首页 > article >正文

微信小程序原生支持TS、LESS、SASS能力探究

文章目录

  • 原生支持
  • 开始使用
    • 旧项目
    • 新建项目
    • TS声明文件更新
  • 功能说明
    • less 使用全局变量
    • sass 使用全局变量

可以参考原文

在之前开发小程序中,无法使用 less/sass 等 css 预编译语言,也无法使用 TS 进行开发,但在最新的编辑器版本中,对这些进行了支持。

原生支持

小程序代码包要求代码文件为 wxml / wxss / js / json / wxs。

如果我们希望使用 TypeScript 或 less 去开发小程序,就需要将 ts 文件或 less 文件编译成对应的 js 文件 或 wxss 文件,这个编译过程以前是需要开发者在工具外自行配置。

从开发者工具 1.05.2109101 以上开始,优化工具内置的编译模块,支持以编译插件的形式,扩展编译功能。

使用这种方式有两个好处:

  1. 项目内只需要创建 ts 文件即可,无需再生成同名的 js 文件,less/sass 文件同理。
  2. 编译流程由开发者工具控制,按需编译,开发体验更好。

开始使用

旧项目

project.config.json 文件中,修改 setting 下的 useCompilerPlugins 字段为 ["typescript"],即可开启工具内置的 typescript 编译插件。 如需同时开启 less 编译插件,可将该字段修改为 ["typescript", "less"]。 目前支持三个编译插件:typescriptlesssass

新建项目

可在创建小程序项目时,选择对应的语言模板。 目前支持的语言模板有

  • TypeScript
  • TypeScript + Less
  • TypeScript + Sass

TS声明文件更新

从 开发者工具 1.05.2203032 以上开始,如果是从上述的模板创建的 TS 项目,遇到小程序相关类型声明过时的情况,可以手动更新。

具体步骤是在编辑器目录树上,找到 typings/types/wx 目录,右键,点击 「更新声明文件」 即可:

功能说明

  • 目前的 ts 代码转换成 js 代码的逻辑,是由 @babel/plugin-transform-typescript 插件进行处理的,因此在编译过程中,仅仅是移除了ts代码中类型声明等信息。类型错误这类信息,在编译过程是没有提示的,只在编辑器中给予提示的。
  • 启用 typescript 编译插件后,js 文件也是支持的,如果存在同名的 ts 和 js 文件,则优先使用 ts 文件。
  • 除了普通小程序,小程序插件开发也是支持的。
  • miniprogram-ci 从 1.6.1 版本开始,也支持此功能。

less 使用全局变量

从开发者工具 1.06.2403132 以上开始,支持 less 直接引用 app.less 中声明的变量和方法,编译器会默认为所有的非 app.less 文件增加引用

代码示例:

// app.less
@redcolor: red;
// 页面.less
.red {
  color: @redcolor; // 直接使用 app.less 中定义的变量
}

在开发者工具中预览效果

sass 使用全局变量

从开发者工具 1.06.2403132 以上开始,支持 sass 直接引用全局变量和方法,和 less 不同,我们需要新增一个 global.scss 文件放置在 app.scss 同级,将公共的变量和方法写在 global.scss 中,编译器会默认为所有的非 global.scss 文件增加引用。

代码示例:

// global.scss
$red: red;
// 其他.scss
.red {
  color: global.$red; // 使用 global 中的变量
}

在开发者工具中预览效果

注意:尽量不要在 global.scss 写非变量定义和方法定义,否则可能增大代码体积。


http://www.kler.cn/a/297834.html

相关文章:

  • 【项目】高效在线OJ平台:基于Linux和C++的负载均衡设计
  • WordPress自动备份至群辉NAS
  • Python算法工程师面试整理-面试中的Python编程题型
  • 关于群里读研的讨论2024-09-09
  • uniapp+vue3实现双通道透明MP4播放支持小程序和h5
  • 每日一题——第八十四题
  • 实现 Excel 文件导入到向量数据库(Milvus),并支持 先查询知识库(Milvus),然后再查询大模型(Ollama) 的功能
  • 百度大模型构建智能问答系统技术实践
  • 【解决内存泄漏的问题】 Qt 框架中的父子对象关系会自动管理内存,父对象会在其销毁时自动销毁所有子对象。
  • 六、深入理解JVM 执行引擎
  • jmeter之setUP、tearDown线程组
  • 【linux】linux中如何通过stress进行压力测试,原理解析与应用实战
  • 关于武汉芯景科技有限公司的IIC电平转换芯片XJ9517开发指南(兼容PCF9517)
  • AR远程协作与Web,视频会议,监控直播融合方案
  • web基础之SQL注入
  • 常用环境部署(十六)——Centos更换yum源
  • 【网络安全】URL解析器混淆绕过CSP实现XSS
  • 怎么使用html中的div元素画圆
  • 系统架构设计师 - 系统可靠性分析与设计
  • 【Qt】解决设置QPlainTextEdit控件的Tab为4个空格