京东Vue组件库NutUI 2.0发布:将支持跨平台!

NutUI 是一套来自京东用户体验设计部(JDC)前端开发部的移动端 Vue 组件库,NutUI 1.0 版本于 2018 年发布。据不完全统计,目前在京东至少有30多个 web 项目正在使用 NutUI。

经过一段时间紧锣密鼓的开发,近期,我们正式发布了 NutUI 的 2.0 版。NutUI 2.0 定位于一个京东风格的移动端精品组件库,并不是 NutUI 1.x 的简单升级版。

\"\"

(扫描/长按识别二维码可以体验 NutUI 2.0 的组件示例)

NutUI 官网同步进行了改版,也欢迎大家访问 https://nutui.jd.com ( PC 端)。

我们来看看 NutUI 2.0 有哪些重要的新特性。

京东APP 7.0 视觉风格

NutUI 2.0 的组件在开发时参考了京东APP 7.0 视觉规范,统一了视觉风格和动效。

\"\"

\"\"

如果与你需要的风格有差异,可以通过增加一个自定义 class 来调整样式。如果差异较大,可以替换掉整个组件的默认样式文件,既可达到修改样式的目的,又能减少被覆盖的冗余代码。

定制主题

NutUI 2.0 支持自定义组件库整体主题风格。通过在项目中重置一些样式变量的值,可轻而易举的实现组件换肤。

\"\"

按需加载

NutUI 1.x 的按需加载是通过自定义构建的方式来实现的,虽可满足需求,但是让用户每次都进 node_modules 目录下找到 NutUI 项目目录安装依赖,再进行自定义构建多有不便。于是,2.0 版我们对组件的按需加载功能进行了重新设计。

使用 NutUI 2.0 的组件时,不必导入完整的组件库,直接在项目中引入我们需要的组件文件及其对应的样式文件即可。如:

import Button from '@nutui/nutui/dist/packages/button/button.js';import '@nutui/nutui/dist/packages/button/button.css';import Switch from '@nutui/nutui/dist/packages/switch/switch.js';import '@nutui/nutui/dist/packages/Switch/switch.css';

不需要再进行自定义构建了,比 NutUI 1.x 方便不少吧。如果你觉得这种方式还不够方便或者不够优雅,也没关系,通过我们提供的 webpack 插件 @nutui/babel-plugin-separate-import ,还可以支持 ES6 module 风格的按需加载写法,且兼容不支持 ES6 module 语法的浏览器。如:

import { Button, Icon } from '@nutui/nutui';

安装插件也麻烦?不妨试试我们提供的一个 Vue 项目的构建工具 Gaea-cli,它可以快速生成一个已内置了这个插件的 Vue 模板工程,你可以直接基于这个工程开发项目。另外,这个构建工具还有很多高级功能,以及针对京东开发环境进行的特定优化,此前的系列版本已经过数十个项目的验证,还是比较稳定的。

国际化

NutUI 2.0 开始支持多语言。组件默认使用中文,可加载其他语言包来实现多语言切换功能。如果你的项目中已经使用了目前 Vue 生态里特别流行的国际化插件 vue-i18n 来实现项目的国际化功能,那么在使用 NutUI 2.0 组件的时候,也完全不需要担心,NutUI 2.0 的国际化功能是完全兼容 vue-i18n 插件的。

SVG图标

我们认为移动端组件库图标方案的最佳实践是 SVG 方案,因为 SVG 图标较字体图标更灵活,更利于按需加载,也不会招致部分浏览器对其进行抗锯齿处理,清晰度高,结合 symbol 元素还可以实现 SVG 图标的复用。同时,SVG 图标在移动端的兼容性也是良好的。我们在 NutUI 1.x 时期就选择了 SVG 作为组件库的图标方案,而这种选择在 NutUI 2.0 版本获得了传承。

除了上述几点,NutUI 2.0 还有支持 TypeScript,支持 SSR 服务端渲染等特性。

全新架构

NutUI 2.0 基于全新的架构开发,并非基于 1.0 的架构升级而来。我们结合 1.0 的架构经验、2.0 的功能需求、工具的新变化、我厂的开发环境、主流优秀组件库的实现方案等因素,全新打造了 2.0 的架构。架构方面主要有以下特点:

  • 基于 Webpack 4.0 开发,拥有更快的构建速度,输出更小的 bundle 文件;

  • 一次性构建出多种类型的 bundle,兼容各种主流模块化场景和非模块化引用场景;

  • 基于 Babel 7 实现了 Polyfill 的智能加载,无须额外引入 Babel-polyfill 文件也可兼容低版本浏览器;

  • 集成 Carefree 方案,大幅提升我厂开发环境的真机调试效率;

  • Markdown 格式的文档便于书写和 Github 阅读,基于 MD 文件自动生成文档网站;

  • 示例页面 PWA 加持,支持离线缓存和创建主屏图标;

  • 接入持续化集成和自动化测试,提升代码可靠性;

  • 支持自动生成新组件模板;

  • 配套一个 webpack 插件和一个 Vue 模板工程构建工具(Gaea 4.0);

组件

组件库是个舞台,台上的主角不是组件库的功能和架构,而是组件。我们在组件开发上下了不少功夫,精心挑选和打磨了一批组件。NutUI 2.0 一期拥有组件三十多个,涉及“基础”、“布局”,“数据录入”、“操作反馈”、“数据展示”、“导航”6大类。

接下来,我们会集中精力继续新增一批组件,同时也会跟进对现有组件的打磨和维护。大家有什么通用组件的需求也可以反馈给我们。

跨平台

根据开发规划,NutUI 2.0 还会有一个重磅功能 —— 支持将 Vue 组件转成微信小程序组件,实现一次编码跨平台(H5和微信小程序)使用,届时 NutUI 将由一个 Web 端 Vue 组件库升华为一个多终端跨平台组件库。目前,这个功能仍在加紧开发中,稍后上线,敬请期待。

参与开发

欢迎感兴趣的小伙伴参与 NutUI 项目的开发,我们建议通过提 pull request 的方式参与。如果要修一个 bug,请提交 pull request 到 master 分支;如果你要提一个新增功能或组件的 pull request,那么请基于 v2 分支,通过 Code Review 之后,我们会合并你的代码。

NutUI 2.0 组件库没有埋任何彩蛋,大家尽管放心使用哦~

链接

  • 官网(PC端):https://nutui.jd.com

  • Github仓库:https://github.com/jdf2e/nutui/

  • 更新日志:https://github.com/jdf2e/nutui/releases

  • 反馈建议:https://github.com/jdf2e/nutui/issues

  • NutUI按需加载插件:
    https://www.npmjs.com/package/@nutui/babel-plugin-separate-import

  • Vue模板工程构建工具:https://www.npmjs.com/package/gaea-cli

  • 不依赖wifi热点的H5真机测试工具Carefree: https://carefree.jd.com/

  • 联系我们:nutui@jd.com

更多内容,请关注前端之巅。

\"\"
会议推荐

2019年6月,GMTC全球大前端技术大会2019即将到来。小程序、Flutter、移动AI、工程化、性能优化…大前端的下一站在哪里?点击下图了解更多详情。

\"\"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macbook 下载时睡眠_MacBook进入睡眠状态时如何自动使其静音

macbook 下载时睡眠You open your MacBook to take notes in class or during a meeting, and your music starts playing. Loudly. Not only did you disrupt everyone, you also revealed your passion for 90’s boy bands to a room full of people who once respected you…

Mac 的mysql5.7没有配置文件,如何解决only_full_group_by 问题

数据库版本是5.7.19,在写语句的时候,只要涉及ORDER BY,就会报错, ERROR 1055 (42000): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column postscan.verifyDelayLog.auditor which is not function…

Spring MVC 入门(一)

什么是 Spring MVC 学习某一样东西之前,我们一定要大致知道这个东西是什么,能干什么,为什么要用它。 Spring MVC 是一个开源平台,一个基于 Spring 的 MVC 框架,它支持基于 Java 开发 Web 应用程序。MVC 架构很利于开发…

开源网关 Apache APISIX 认证鉴权精细化实战讲解

关注公众号并添加到“星标⭐”,防止错过消息后台回复【资料包】获取学习资料GitOps 新手入门到专家进阶实战详细教程作者钱勇,API7.ai 开发工程师,Apache APISIX Committer在当下云原生越发成熟的环境下,API 网关最核心的功能可以…

python应用POP3、IMAP、SMTP 协议,获取邮箱验证码

POP3和IMAP是邮件相关的协议,IMAP是比POP3更高级一点的协议,实…

固件中启用的虚拟化否_哪些固件或硬件机制可启用强制关机?

固件中启用的虚拟化否At one time or another, all of us have had to force our computers to shut down by pushing and holding the power button down until they powered off. Is this mechanism hardware-based, firmware-based, or both? Today’s SuperUser Q&A p…

.NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构二)--学习笔记...

▲ 点击上方“DotNet NB”关注公众号回复“1”获取开发者路线图学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第202篇原创文章目录为什么我们用 OrleansDapr VS OrleansActor 模型Orleans 的核心概念结合 OP Storming 的实践结合 OP Storming 的实践业务模型设计模型代…

PHP 多维数组转json对象

PHP 多维数组转json对象 php 数组转json对象&#xff0c;可能大家都知道要用json_encode,但是转换出来的格式多有不同&#xff0c;此处做个小小的记录&#xff01; 1. 一维数组转json对象 <?php $arr_1 [one, two, three]; var_dump(json_encode($arr_1)); $arr_2 [0 >…

微软文本检索_如何在Microsoft Word中引用其他文档中的文本

微软文本检索You probably have some text that you type often in your Word documents, such as addresses. Instead of retyping this text every time you need it, you can put this common text into one Word document and reference it in other documents–it’ll eve…

Hadoop-Flume-类比吸尘器图解

2019独角兽企业重金招聘Python工程师标准>>> 这是我自己理解Hadoop-Flume的方式 转载于:https://my.oschina.net/u/3697442/blog/1560613

ChatGPT 之后,再玩玩 Stable-Diffusion

前些天体验的 ChatGPT 主要用来进行文本方面的处理&#xff0c;那么图片生成有没有这样的 AI 工具 呢&#xff1f;答案是肯定的。例如&#xff1a;和菜头公众号的题图和文章中的插图大多都是使用 Stable-Diffusion 的 AI 图形生成工具创作的。顺着 Stable-Diffusion 搜索了下相…

渗透测试入门DVWA 教程1:环境搭建

首先欢迎新萌入坑。哈哈。你可能抱着好奇心或者疑问。DVWA 是个啥&#xff1f; DVWA是一款渗透测试的演练系统&#xff0c;在圈子里是很出名的。如果你需要入门&#xff0c;并且找不到合适的靶机&#xff0c;那我就推荐你用DVWA。 我们通常将演练系统称为靶机&#xff0c;下面请…

移动硬盘改台式机硬盘_如何在台式机或移动设备上离线使用Google云端硬盘

移动硬盘改台式机硬盘If there’s any drawback to using cloud-based services for all your productivity and organization needs, it’s that if you can’t get an Internet connection, you’re basically out of luck. 如果使用基于云的服务来满足您的所有生产力和组织需…

你可能不知道的容器镜像安全实践

大家好&#xff0c;我是Edison。最近在公司搭建CI流水线&#xff0c;涉及到容器镜像安全的话题&#xff0c;形成了一个笔记&#xff0c;分享与你&#xff0c;也希望我们都能够提高对安全的重视。时代背景近年来应用程序逐步广泛运行在容器内&#xff0c;容器的采用率也是逐年上…

【Win 10 应用开发】UI Composition 札记(二):基本构件

在上一篇中&#xff0c;老周用一个示例&#xff0c;演示了框架视图的创建过程&#xff0c;在本篇中&#xff0c;老周将给大伙伴们说一下 Composition 构建 UI 的一些“零件”。 UI Composition 有一个核心类——对&#xff0c;就是 Compositor 类&#xff0c;它是总生产车间&am…

禁用内置键盘_如何禁用Windows 10的所有内置广告

禁用内置键盘Windows 10 has a lot of built-in advertising. This isn’t just about the free upgrade offer: Even if you purchase a new PC that comes with a Windows 10 license or spend $200 for a copy of Windows 10 Professional, you’ll see ads in your operati…

震惊!顶着 39.5℃高烧 ,我和这哥俩都聊了些啥?

这是头哥侃码的第271篇原创上周三&#xff0c;我邀请了两位嘉宾进入直播间&#xff0c;即便自己顶着 39.5 度的高烧&#xff0c;还是强打精神与这哥俩聊了俩小时。相信关注我的朋友们都知道&#xff0c;我是头哥侃码的主理人&#xff0c;同时也是上海TGO上海分会董事会成员。赵…

在Windows Mobile模拟器(Emulator)建立网络连接

因为想使用Windows Mobile Emulator进行网络通信程序的测试&#xff0c;所以找方法配置Emulator的网络连接。在网上找了一些文章&#xff0c;很多都说需要安装Virtual PC 2007. 例如下面的文章Enable Network Connection Windows Mobile 6 Emulator 如果需要 Virtual PC 2007 可…

api游戏编程鼠标选择拖动_如何选择合适的游戏鼠标

api游戏编程鼠标选择拖动You don’t need a gaming mouse to play PC games—just about any mouse with two buttons and a wheel will play anything you want it to. But that’s no reason to deny yourself the wonderful variety of gaming mouse designs on the market.…

iOS - 上架的APP 生成二维码下载

1.首先打开苹果App Store商店进入到里面&#xff0c;找到需要打开链接地址的应用程序&#xff0c;例如&#xff1a;百度。2. 在App Store商店里面先点击一下应用程序图标&#xff0c;再按一下…分享按钮。 3. 接着选择分享APP&#xff0c;再点击拷贝链接地址&#xff0c;将应用…