weex-style-loader: 给你熟悉的style开发体验

简介: > 使用`weex`开发了两个项目,感受到了其跨平台动态性的强大;另一最直接的感受就是,作为一名前端,不能像平常那样编写`css` ,要不定义`内联style`,要不定义`single-class selector`,绞尽脑汁去给每个标签起`className` 像这样 ```html .mod-app-entry { ... } .entry-item

使用weex开发了两个项目,感受到了其跨平台动态性的强大;另一最直接的感受就是,作为一名前端,不能像平常那样编写css ,要不定义内联style,要不定义single-class selector,绞尽脑汁去给每个标签起className

像这样

<style>
  .mod-app-entry {
    ...
  }
  .entry-item {
    ...
  }
  .entry-img {
    ...
  }
  .entry-txt {
    ...
  }
</style>
<template>
  <div class="mod-app-entry">
    <a class="entry-item" repeat="{{list}}" href="{{jumpUrl}}">
      <image class="entry-img" src="{{imgUrl}}"></image>
      <text class="entry-txt">{{title}}</text>
    </a>
  </div>
</template>
AI 代码解读

作为前端,这样子臣妾做不到

笔者更希望能跟熟悉的味道一样

  • 使用任意选择器,元素选择器、组合选择器;
  • 使用继承

像这样

<style>
  .mod-app-entry {
    /*定义全局样式*/
    color: #999;
    font-size: 24;
  }
  a {
    ...
  }
  image {
    ...
  }
  .mod-app-entry text {
    /*覆盖color:#999,继承font-size:24*/
    color: #f00;
    text-align: center;
  }
</style>
<template>
  <div class="mod-app-entry">
    <a repeat="{{item in list}}" href="{{item.pluginUrl}}">
      <image src="{{item.imgUrl}}"></image>
      <text>{{item.title}}</text>
    </a>
  </div>
</template>
AI 代码解读

味道还是熟悉的好,可是该怎么做呢?

幸好,weex提供的weex-loader支持webpack打包,于是并有了编写weex-style-loader的想法

将我们平常编写的 style 转换成single class selecor style,这样就可以愉快地开发weex

使用

安装loader

tnpm install @ali/weex-style-loader --save-dev
AI 代码解读

配合weex-tookit脚手架,在webpack中添加loader

loaders: [
  {
    test: /\.we(\?[^?]+)?$/,
    loaders: ['weex-loader', '@ali/weex-style-loader']
  }
]
AI 代码解读

让我们看看weex-style-loader转换后的代码是否符合大爷的需求

<style>
.mod-app-entry {
  color: #999;
  font-size: 24;
}
.weex-element-increment-1 {
  ...
}
.weex-element-increment-2 {
  ...
}
.weex-element-increment-3 {
  text-align: center;
  color: #f00;
  font-size: 24;
}
</style>
<template>
  <div class="mod-app-entry">
    <a repeat="{{item in list}}" href="{{item.pluginUrl}}" class="weex-element-increment-1">
      <image src="{{item.imgUrl}}" class="weex-element-increment-2"></image>
      <text class="weex-element-increment-3">{{item.title}}</text>
    </a>
  </div>
</template>
AI 代码解读

展望

在此基础上,类似vue支持<style lang="less"></style>,就可以使用lesssass预处理器了
敬请期待

目录
相关文章
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
494 2
移动端混合开发技术:React Native、Weex、Flutter 之争
在移动应用开发领域,React Native、Weex 和 Flutter 是备受关注的混合开发技术。本文将对它们进行全面比较与评估,以帮助开发者做出明智的选择。我们将从开发生态、性能、跨平台能力和易用性等方面进行比较,为读者提供全面的参考和指导。
移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动应用的开发已经成为现代社会中的重要一环。本文将比较并评估三种主流的移动端混合开发技术:React Native、Weex和Flutter。通过对它们的特点、优势和劣势的分析,帮助开发者在选择适合自己项目的技术方案时做出明智的决策。
移动端混合开发技术探析:React Native、Weex、Flutter的比较与选择
随着移动应用开发的高速发展,混合开发技术成为了一种备受关注的选择。本文将对移动端混合开发技术中的React Native、Weex和Flutter进行比较与探讨,分析它们在性能、开发体验、生态系统和跨平台支持等方面的差异,以及如何根据项目需求进行选择。
267 1
weex开发- 无法找到模块“weex-vue-render”的声明文件。引入vue报错,无法找到引入的vue模块
weex开发- 无法找到模块“weex-vue-render”的声明文件。引入vue报错,无法找到引入的vue模块
346 0
weex开发- 无法找到模块“weex-vue-render”的声明文件。引入vue报错,无法找到引入的vue模块
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
235 0
weex开发 - 加载index.js崩溃,白屏(may it has been destroyed so method:fireEvent is ignored,Url must be passe)
weex开发 - 加载index.js崩溃,白屏(may it has been destroyed so method:fireEvent is ignored,Url must be passe)
380 0