赞
踩
JS UI是鸿蒙系统推荐的UI开发框架,使用JavaScript语言编写,通过JS API提供界面渲染和组件能力。
JS UI框架分为JS Framework层、JS Render层、Native Engine层三层架构
三层解耦,翻译多端引擎指令,高效渲染UI。
下面通过Hello World示例,介绍JS UI的基础用法。
import ui from '@ohos.ui'
- @Entry
- @Component
- struct HelloWorld {
- build() {
- Column() {
- Text('Hello World')
- .fontSize(50)
- .fontWeight(FontWeight.Bold)
- }
- .width('100%')
- .height('100%')
- }
- }
可见,通过声明式语法构建页面,非常简洁高效。接下来将深入JS UI的其他能力。
JS UI框架提供多种布局容器,用于构建页面的基础布局结构。
Stack以垂直方向线性排列子元素,常用于简单的内容展示。
- Stack() {
- Text('Title').fontSize(30)
-
- Image('/images/img.png')
- }
List 支持横向或纵向列表展示,可配置滚动效果。
- List() {
- ForEach(dataList) {
- Text($item.name)
- }
- }
- .listDirection(Axis.Vertical)
- .scrollable(true)
Row和Column用于水平和垂直排列子元素。
组件是构建界面不可或缺的元素,JS UI提供丰富的基础组件。
用于显示和格式化文本。
- Text('内容')
- .fontSize(20)
- .fontWeight(800)
- .fontFamily('cursive')
用于展示图片资源。
- Image($imgSrc)
- .width(300)
- .height(240)
- .objectFit(ImageFit.Contain)
用于文本输入。nput支持丰富的事件如change、focus等。
- Input()
- .placeholder('请输入')
- .fontSize(16)
- .onChange((value) => {})
我们可以基于基础组件封装成新组件,实现复用。
使用@Component装饰器定义组件类。
- @Component
- export default class Title extends Component {
- build() {
- Column() {
- ...
- }
- }
- }
- @Entry
- @Component
- struct Page {
-
- build() {
- Title()
- }
- }
自定义事件与参数。
- @Component
- export default class Title extends Component {
-
- build() {
- Text(){this.props.title}
- }
-
- onClick() {
- this.fireEvent('titleClick')
- }
-
- }
-
- // 使用
- Title({title:"标题"})
- .onClick(() => {})
UI样式通过Style API进行统一调整。
- Text()
- .style({
- fontSize: 30,
- color: '#FF0000'
- })
- // styles.css
- text {
- font-size: 30px;
- color: red;
- }
- // index.js
- import './styles.css'
JS UI框架通过数据绑定实现视图和状态同步。
- @Entry
- @Component
- struct Demo {
-
- build() {
- Column() {
- Text(`Count: {{count}}`)
-
- Button()
- .onClick(() => {
- this.count++
- })
- }
- }
-
- data = {
- count: 0
- }
-
- }
通过{{ }}
绑定数据变量。
- @Entry
- @Component
- struct Demo {
-
- build() {
- Column() {
- Input{
- this.text
- }.onChange((val) => {
- this.text = val
- })
-
- Text('输入的是:{{text}}')
- }
- }
-
- data = {
- text: ''
- }
- }
实现双向绑定,数据和视图同步更新。
页面路由用于管理页面入口与页面栈。
- // router.js
- export default [
- {
- path: '/index',
- component: 'index'
- },
- {
- path: '/detail',
- component: 'detail'
- }
- ]
- import router from './router'
-
- router.push({
- uri: '/detail',
- params: {
- id: 123
- }
- })
JS UI框架通过动画API启用组件动画。
补间动画依赖时间线变换属性。
- // Opacity渐变
- animateTo({
- duration: 1000,
- fillMode: 'forwards',
- easing: 'friction',
- animations: {
- opacity: [0, 1],
- }
- })
- // 顺序执行多个动画
- animateTo({
- duration: 1000,
- animations: [
- {opacity: 0},
- {opacity: 1},
- ]
- })
- // 自定义时间函数
- animateTo(
- 1000,
- (progress) => {
- this.width = progress * 500
- }
- )
生成hap包,进行应用签名和部署。
- # 打包生成hap
- $ hap build -t debug
-
- # 安装hap包
- $ hap install -t debug
打开DevEco Studio,在项目签名选项中配置签名证书,选择证书对hap进行签名。
按功能拆分可复用组件,提高开发效率。可参考前面课程
通过编译指令实现条件编译,解决API差异。
- // #if %api('system.prompt')
- import prompt from '@system.prompt';
- // #else
- import prompt from '@ohos.prompt';
- // #endif
基于JSUnit框架编写组件单元测试。
- @Test
- testButton() {
- let button = new Button();
- assert(button !== null);
- }
通过UI Automator API实现界面自动化测试。
JS UI框架为鸿蒙应用提供了高效的UI开发手段。相比其他框架,它具有性能高、多端适配等优势。通过掌握其声明式语法、数据驱动等特性,可以快速构建出色的应用界面。
·这里对JS UI的各种能力进行了全面介绍,同时提供了最佳实践指导。希望本文可以帮助开发者深入理解和应用JS UI框架,构建跨平台的高质量应用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。