钟爱Angular

WeUI在微信上的表现真的很惊艳,极大简化微信UI的纠结。如果你和我一样一时找不到合适的UI,WeUI未尝不是一种选择。

一直以来大厂对React比较钟爱,官网也提供 React-Weui 版本;而对于像我这类钟爱Angular的人而言,或者说团队里面对Angular比较熟悉的情况下,如果能有一套比较标准的UI,在微信端开发应用也会极爽。

当然啦,Angular版本的WeUI在Github上也有好几套,但要么是还处于2.x时代、要么就是缺少维护。因此,不得以重复造了一套轮子,其名:ngx-weui

如何使用

下面会有点啰嗦,在这之前可以看一眼示例。

样式

ngx-weui 除了官网不提供的UI组件样式外,但有些组件又很常用撸了点非官网的样式外,不带任何样式。因此,在使用前务必先引用weui.css,或者直接在 index.html 中引用官网CDN版本。

<link href="//res.wx.qq.com/open/libs/weui/1.1.2/weui.min.css" rel="stylesheet">

安装与注册

npm install ngx-weui --save

ngx-weui 默认情况下可以直接使用:

import { WeUiModule } from 'ngx-weui';@NgModule({imports: [ WeUiModule.forRoot() ]
})
export class AppModule { }

注册所有的模块。

当然,如果你明确知道只使用其中几个模块的话,可以针对模块进行导入,这样也可以简化包大小,比如导入一个弹出式菜单模块:

import { ActionSheetModule } from 'ngx-weui/actionsheet';@NgModule({imports: [ ActionSheetModule.forRoot() ]
})
export class AppModule { }

使用

ngx-weui 本身并没有像 react-weui 版本那样,对样式也进行组件化。关于这一点好坏,和语言环境有很大关系。

用一句比较简单的话来讲,react在运行时决定组件,而angular在编译时决定组件。

正因此如此,所以我决定不对样式也组件化,因为这样完全没有意义。所以 ngx-weui 只对功能性进行组件化。

怎么区分这一点呢?比如说 weui-cell 表示一个单元格,这样样式本身只是为组织我们DOM结构,并不附加任何功能性质,因此并不会像react一样有一个相对应的 Cell 组件。

当然,像Toast本身是需要触发产生的,则 ngx-weui 会有一个对应的组件叫 weui-toast

<weui-button (click)="successToast.onShow()">Toast From Component</weui-button>
<weui-toast #success></weui-toast>
@ViewChild('success') successToast: ToastComponent;

默认Toast组件创建后是被隐藏的,所以这里需要定义一模板变量用于存储这个组件实例,才能调用该组件的 onShow() 方法。

恩,上面的写有点奇怪,因为不是很优雅,我的意思是说需要先在HTML模板中放置一个 weui-toast 组件,然后再定义一个模板变量,最后需要的时候调用显示方法。

所以,提供另一种 Service 形式写法,为什么呢?很简单,很多时候我们希望在 Class 里直接一个 Toast 显示告知用户你有问题,这个时候还要去HTML模板创建再显示,显得编码太过于笨拙。

constructor(public srv: ToastService) {// successsrv.success();// loadingsrv.loading();
}

怎样,注入 Service 类,一行代码简洁、优雅!

全局默认配置项说明

有一些模块(比如:actionsheet、button等),虽然已经有一些默认的配置,但你可以通过全局注册来改变它。

比如,默认按钮的类型是 primary(成功样式)。

<weui-button>成功样式按钮</weui-button>
<weui-button weui-type="warn">警告样式按钮</weui-button>

可以在NgModule改变默认配置项,默认所有按钮为警告样式。

import { NgModule } from '@angular/core';
import { WeUiModule, ButtonConfig } from 'ngx-weui';@NgModule({imports: [WeUiModule.forRoot()],providers: [// 重置默认按钮样式为:warn{ provide: ButtonConfig, useFactory: ()=> { return Object.assign(new ButtonConfig(), { type: 'warn' }); } }]
})

这种方式,可以简化通用操作。

是否允许全局配置的模块,可以在API文档中见【可用于[全局配置]】字样的类,都属性可用于全局配置类。

一些细节但又有用的点

命名说明

HTML模板中组件名、属性名的命名有的是以 weui- 开头,而有的并没有。其实,很容易理解这些区别。

  1. 所有组件、指令都需要 weui- 开头。
  2. 指令所需要的属性都需要 weui- 开头。
  3. 组件只允许标签(指:<weui-actionsheet></weui-actionsheet>)写法都不需要 weui- 开头。

最后

ngx-weui 会保持更新及组件的开发,如果您有兴趣可以至 Github 了解更多。

基于WeUI的Angular2开发相关推荐

  1. 基于微信小程序开发的仿微信demo

    (本文参考自github/liujians,地址:https://github.com/liujians/weApp) 作者声明: 基于微信小程序开发的仿微信demo  整合了ionic的样式库和we ...

  2. 移动商城html 源码,基于weui的移动商城html5模板

    [实例简介] 基于weui开发的一整套移动端商城,包括首页,购物车,订单管理,评价,分类,会员中心等 [实例截图] [核心代码] web └── web ├── add_card.html ├── a ...

  3. catia三维轴承_浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文

    浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文 一.概述 单排四点接触球转盘轴承是一种能够同时承受较大轴向负荷.径向负荷和倾覆力矩等综合载荷,集支承.旋转.传动.固定等多种功能于一身的特殊 ...

  4. miui12 android版本,miui12基于安卓几版本开发的?miui12是安卓11吗

    miui12基于安卓几版本开发的?miui12系统已经在内测阶段了,还没有体验的用户朋友们对于miui12系统非常的好奇,想知道miui12基于安卓几,是安卓11吗?为了帮助大家有更全面的了解,今天小 ...

  5. 基于FPGA的以太网开发

      基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...

  6. 基于IAR上搭建开发MM32的环境

    简 介: 初步搭建了MindMotion基于IAR的软件开发环境.测试了基于DAPLink对于SeekFree开发板的开发功能.但是对于测试实验板,DAPLink无法寻找到目标MCU. 利用MM32- ...

  7. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复 ...

  8. 基于MINA框架快速开发网络应用程序

    1.MINA框架简介  MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用 ...

  9. 基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程(转)...

    源:基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程 转载于:https://www.cnblogs.com/LittleTig ...

最新文章

  1. TinyXml高速入口(一)
  2. Docker Swarm 用compose部署WordPress
  3. html5 新增属性了解
  4. kvm直通sata_基于KVM的SRIOV直通配置及性能测试
  5. 后台服务系统之Dubbo Admin的讲解
  6. 数据中台离数据资产“价值变现”还有多远?
  7. Python-----学了今天,忘了昨天.
  8. 数学知识总结——矩阵
  9. (6)css盒子模型(基础下)
  10. android服务器怎么做的,[Android]Android 制作一个HTTP服务器应用
  11. 刷爆AI圈!基于Transformer的DALL-E代码刚刚开源了
  12. python小白应该看什么书_小白学python看什么书
  13. datetime 索引_超全的数据库建表/SQL/索引规范,适合贴在工位上!
  14. linux常用目录操作命令
  15. 不想一直做码农的请进~
  16. 【Masm】使用教程
  17. android svg 编辑器,Android svg 格式使用小结
  18. java 继承抽象类_java基础之继承,抽象类
  19. 应聘引擎程序需做哪些准备
  20. jacob java excel_Java使用jacob将微软office中word、excel、ppt转成pdf

热门文章

  1. SQL Server 学习系列之五
  2. ipsec 网络安全协议
  3. 上海银行:转型创新网银与应用质量双赢
  4. [MySQL FAQ]系列 -- 如何为一个数据库指定字符集
  5. 一步一步深入理解Dijkstra算法
  6. F5负载均衡配置手册-实操后的
  7. 屏蔽微软的SignalR
  8. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
  9. 复杂的数据类型5 - C++快速入门11
  10. 全民上网到全民织网 Web 2.0掀起人民战争