前言
平时看东西太容易忘记了,于是自己决定将每天看的新东西记录下来,就当增强一下记忆了
taro的第一印象
使用react的语法。类似微信小程序的标签在写项目,小程序现在经常写,很熟悉,但是react没有在实际项目中使用过,看起来还是有点生疏,这个需要多加练习并在项目中尽快熟它。
taro的安装和项目初始化
使用npm全局安装taro的脚手架
npm install -g @tarojs/cli
taro安装好后找个目录,初始化taro项目
taro init [projectNane]:myApp
如果安装的太慢,可以配置npm源
1.临时使用
npm --registry https://registry.npm.taobao.org install express
2.持久使用
npm config set registry https://registry.npm.taobao.org
taro init按照提示选择一些默认配置之后就初始化成功一个taro项目了
taro开启h5项目之后遇到的第一个难题
我在配置中开启taro的cssModule功能后,他并没有老老实实给我编译成功,我通过在.jsx文件中引用样式报了错
// 按照官方文档的说法,开启cssModule后,需要cssModule打包的样式文件名需要带.module
在config目录下的index.js设置以下代码:
h5: {
postcss: {
cssModules: {
enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true
config: {
namingPattern: 'global', // 转换模式,取值为 global/module
generateScopedName: '[name]__[local]___[hash:base64:5]'
}
}
}
}
在index.jsx中的写法:
import style from './index.module.sass'
<View className={style.name}></View>
// 这样引入之后编译报错了如下:
ValidationError: Invalid options object. CSS Loader has been initialized using an options object that does not match the API schema.
- options has an unknown property 'localIdentName'. These properties are valid:
object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }
关于上面这个问题我还没找到正的愿意原因,到底哪里少了什么配置,但是通过其他方式可以解决这个问题,我的解决的方案如下。
我不是用默认配置中的cssmodule,它官方文档实在postcss里面配置并开启的,我直接将这个里面的配置关换掉,
并在它提供的cssLoaderOption中进行cssModule的配置,这样就解决了开启cssModule报错的问题。
cssLoaderOption: {
modules: {
mode: 'local',
localIdentName: '[local]__[hash:base64:5]'
},
import: true,
importLoaders: true,
}
各位taro高级玩家如果看到这篇文章,知道关于这个cssModule开启后报错的原因,烦请在评论区给小弟留言,非常感谢
上述的问题知道怎么回事了,我在安装taro的时候默认给我装了2.2.3版本的脚手架,原因是因为taro2.2.3版本(经查证更高的beta版本存在相关问题)这个cssModule有问题,应该是css-loader的配置不对。解决方案如下:
把@tarojs/cli和taro的版本回滚到2.1.5的稳定版本,重新安装依赖,问题即可解决。