Tencent / wepy

小程序组件化开发框架
https://wepyjs.gitee.io/wepy-docs/
Other
22.49k stars 3.05k forks source link

【新语法讨论】import 语法的意见收集 #1855

Open Gcaufy opened 5 years ago

Gcaufy commented 5 years ago

在使用 less/sass/stylus 时,会用到 @import 语句,页面A和页面B 同时 import 了同一个文件时,实际上这个文件被被分别编译进了 a.wxss 和 b.wxss。 实际上小程序是支持@import 语法的,所以这一部分不用重复编译的

因此,参考 Less 的 import-options 考虑新添加一个import 语法防止重复编译。

Less:

@import (weapp) './common';

Output:

@import './common.wxss'
ymqq commented 5 years ago

用@import好像就是希望真正的import吧,直接就不要把文件复制进去不久好了么,为啥还要多余的语法呢。

Gcaufy commented 5 years ago

@ymqq 有些公用文件用户会单独放在 common.wxss 然后 page1, page2, page3 分别都 @import common.wxss

那不就是这个common被分别编译进了三个文件了么?代码量翻了三倍

idseventeen commented 5 years ago

@ymqq 有些公用文件用户会单独放在common.wxss 然后第1页,第2页,第3页分别都@import common.wxss

那不就是这个共同被分别编译进了三个文件了么?代码量翻了三倍

小程序本身就支持import语法。不需要将其编译复制到引用目的位置,

eg:

/* common.wxss */
page {
  display: flex;
}
/* page.wxss */
@import common.wxss

/* page styles */

编译后结果

/* common.wxss */
page {
  display: -webkit-box;
  display: -webkit-flex;
  display: flex;
}
/* page.wxss */
@import common.wxss

/* page styles */

那程序只需要对common.wxss进行编译,页面的wxss无需做任何改动。(我认为应该是这样😊)

Gcaufy commented 5 years ago

@ishen7 现在的问题就是这个。如果你的这段代码 里放在 less 中去编译, 他会直接把代码 import进来。 现在希望在less中去定义一个 @import (weapp) './common'; 语法,让其编译为 @import './common.wxss';

shawbs commented 5 years ago

common.wxss是公用样式还是公用变量/混入? 1,如果是公用样式的话,为何page中要引入它?不是应该把它编译到app.wxss中吗 2,如果是第二种的话,我觉得不管是scss还less,都应该按它原来那样编译(scss,less自己的编译方式),而不是考虑编译成wxss还css

swen624 commented 5 years ago

@import (css) './common.wxss' wepy1里面可以这么写,要是能保留就还挺方便

zhuman90 commented 5 years ago

@ishen7 现在的问题就是这个。如果你的这段代码 里放在 less 中去编译, 他会直接把代码 import进来。 现在希望在less中去定义一个 @import (weapp) './common'; 语法,让其编译为 @import './common.wxss';

所以现在商量的结果是什么呢?我现在直接`@improt 'xxxx.scss'会把文件内容直接编译到wxss里边

nishino-tsukasa commented 5 years ago

同求现在的结果是什么 根据 wepy1 的写法已经不行了,因为打包方式改了,未被依赖的文件不会被编译 @import (css) './common.wxss'