html代码转gui,微信小程序脚手架及html转译GUI工具

微信小程序出现引发了很多讨论,许多开发者都跃跃欲试尝试了小程序的开发。它重新定义了自身的一套开发规范,对于现有的html页面是不支持了。

为此我们设想了一套方案,怎么最快速的把现有的开发流接入到小程序中,并能快速的修改现有html项目以符合微信小程序的规范?于是写了一套html暴力转译成wxml的方案,以及搭配了初始模板的脚手架。结构沿用feWorkflow,大部分改动是针对目录的gulp工作流。

1. 脚手架

小程序有一套默认的文件结构,根目录下必须存放有以下3个文件:

.

├──app.js

├──app.json

├──app.wxss

而页面则由4个文件构成:

.

├──js

├──wxml

├──wxss

├──json

根据这套规则,通过GUI工具新建的模板,这个脚手架会默认创建一个源码src目录:

0818b9ca8b590ca3270a3433284dd417.png

点击开发 ,会创建dist文件目录,将编译后的less(或在设置中配置成sass)文件转换成wxss文件,其他html,js, css文件的更改也会同步处理到dist目录中,图片资源则会通过imagemin进行压缩,抛出到dist/image目录中。src源码目录和dist目录(两者均可以通过配置项修改名称)的划分是为了保持源代码的完整性,以及维持图片的原始文件(psd等),而不会在编译过程中被破坏。

到目前的微信开发者工具的版本(0.10.101100),已经附带自动刷新页面的功能,所以src目录中的所有改动,会同步修改dist目录下的文件并刷新,可以无缝在熟悉的编辑器中进行操作。

脚手架示例:

新建项目:

0818b9ca8b590ca3270a3433284dd417.png

开发项目:

0818b9ca8b590ca3270a3433284dd417.png

HTML to WXML转译工具

demo:

0818b9ca8b590ca3270a3433284dd417.png

1.目录结构

上文提到了小程序有默认的一套脚手架结构,编译工具会将源码目录下的所有html文件进行转译,并创建一个当前目录名-build的文件夹,将所有编译后的wxml存放到page/文件名/文件名.wxml。app.json全局配置的pages也会默认创建。根据创建的目录名,将同名的css文件,重命名为wxss文件,并存放到同名目录中,当css与文件名不符,则合并不符的css文件,存放到全局目录的app.wxss中。而因为小程序不再支持jQuery等等通用库,源码目录下的js会全部忽略,页面级的js,则会复制到同名目录中,这个js则包括注册页面的Page函数基础模板。

举个例子:

源码test目录文件结构如下

├──test

| └──css

| └──index.css

| └──global.css

| └──js

| └──index.js

| └── index.html

| └── other.html

编译后的目录结构会改变为:

├──test-build

| └──app.wxss

| └──page

| └── index

| └── index.wxml

| └── index.wxss

| └── index.js

| └── other

| └── other.wxml

2. HTML

先来看一下wxml和html的标签大致的对比图:

0818b9ca8b590ca3270a3433284dd417.png

根据图中标签的的匹配规则,在编译过程中,遍历html文件,先转换成xml,保证img等包含闭合标签,再通过正则匹配符合的标签来替换或者删除。这个替换标签可以在设置中更改。

举个例子:

广东联通

立即生效

月底失效

全国可用

河南联通维护中,流量充值缓慢

当地运营商维护中,请稍后再试

编译后:

广东联通

立即生效

月底失效

全国可用

河南联通维护中,流量充值缓慢

当地运营商维护中,请稍后再试

3. css

尺寸单位

小程序推出了自身的计量单位rpx,并推荐使用750的设计稿作为开发标准,而目前组内开发普遍使用640的设计稿进行设计,同时使用rem进行适配。

所以在转义过程中,添加了设计稿尺寸的设置,默认设置,是640设计稿,100px计算rem,默认乘以2倍。

这个设置的意思是:我们在开发过程中使用640的设计稿,并使用rem兼容,iphone4屏幕320px的html font-size为100px,css中表现为:640 / 2 / 100rem, 即640px == 3.2rem;

css中会去遍历所有匹配rem的属性,获取数值,通过(match * fontSize * (750 / viewport)).toFixed(2) * times来计算rpx,即(匹配数值 * fontSize * (750 / 640)).toFixed(2) * 2。

而px转rpx则是由(match * (750 / viewport) * times).toFixed(2)来转换。

wxss支持大部分css的属性,但是仍有些情况下不兼容,但编译工具没有做处理,免得出现误删的情况,假如页面中写了a选择器,则需要手动改成navigator选择器。

4. image

所有png|jpg|gif|svg格式图片统一进行压缩并复制到个目录下的image目录中,并将wxml中image的src,和wxss中的background-url修改为../../image/

写在最后

小程序的开发语言已经与日常开发的语言有所不同,一套通用的方案已经是不可行了,还是有很多东西需要手工去处理,比如template等。转译工具是在内部的产品环境下测试的,可能会有许多考虑不周的地方,欢迎大家斧正。

下载:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,微信小程序可以使用 Less。 Less 是一种 CSS 预处理语言,它可以帮助开发者快速、有效地书写样式代码微信小程序支持使用 Less,开发者可以在小程序中使用 Less 编写样式,然后通过工具编译成 CSS 文件,在小程序中使用。 ### 回答2: 微信小程序是一种基于微信平台开发的应用程序,通过微信提供的开发工具和接口进行开发和发布。微信小程序使用的是WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheets)来分别进行页面结构和样式的编写。 在WXSS样式文件中,可以使用CSS进行样式的定义和设置,但是不支持所有的CSS功能。微信小程序使用的是一套有限的样式规范,目前主要支持CSS3规范中的部分功能和选择器。 对于less(Leaner CSS)而言,它是一种CSS预处理器,可以提供更灵活的样式定义和编写方式。但是微信小程序并不原生支持less文件的解析和编译,仅支持原生CSS文件。 如果想在微信小程序中使用less的功能,可以通过将less文件编译为CSS文件,然后在WXSS文件中引入该CSS文件的方式来实现。这样可以在开发过程中使用less的语法和功能,同时又能确保在微信小程序环境中正常运行。 总结来说,微信小程序不直接支持less文件的使用,但可以通过编译less文件为CSS文件的方式间接使用。 ### 回答3: 微信小程序不支持在开发过程中直接使用less。微信小程序的开发文档中并没有提到支持less。在小程序的开发中,微信推荐使用WXML(用于描述页面结构)、WXSS(用于描述页面样式)和JavaScript(用于描述页面逻辑)进行开发,这是小程序的官方规范。 虽然微信小程序不直接支持less,但是开发者可以通过其他方式来使用less。比如,可以借助转译工具将less编译成CSS,然后在小程序中使用。也可以使用其他的CSS预处理器,如sass等,然后将编译后的CSS引入到小程序中。 需要注意的是,无论使用何种方式,都需要保证最终在小程序中使用的是符合WXSS规范的CSS代码。此外,小程序的性能和加载速度对用户体验非常重要,使用预处理器可能会增加编译和加载的时间,因此在使用时需要谨慎权衡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值