京東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.pswp.cn/news/279947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279947.shtml
英文地址,請注明出處:http://en.pswp.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…

簡述閉包

閉包 這是我對閉包的一點小理解.有問題請直接指出,在此先謝過! 閉包的含義 封閉隔離的空間,在javascript中,只有函數能夠符合這種特性; 為什么要用閉包呢? 因為在引用外部js文件(如jquery,各種框架)時防止變量重名造成的問題,同時也使代碼更具隱私性; 獲取閉包中數據的方法: …

Confluence 6 配置服務器基礎地址備注

使用不同 URL。如果你配置了不同的基礎 URL 地址或者你站點的訪問者使用了不同的 URL 地址來訪問你的 Confluence 地址,你有很大概率可能會受到錯誤信息。修改上下文地址。如果你修改了基礎 URL 地址的上下文地址,你同時也需要修改下面的配置&#xff1a…

2019第10周知識總結

react 事件綁定 函數寫法 文檔總結 https://react.docschina.org/docs/handling-events.html 1 通過 constroucor綁定 class Toggle extends React.Component {constructor(props) {super(props);this.state {isToggleOn: true};// This binding is necessary to make this wo…

.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

BZOJ4327:[JSOI2012]玄武密碼(SAM)

Description 在美麗的玄武湖畔&#xff0c;雞鳴寺邊&#xff0c;雞籠山前&#xff0c;有一塊富饒而秀美的土地&#xff0c;人們喚作進香河。相傳一日&#xff0c;一縷紫氣從天而至&#xff0c;只一瞬間便消失在了進香河中。老人們說&#xff0c;這是玄武神靈將天書藏匿在此。 很…

ChatGPT 之后,再玩玩 Stable-Diffusion

前些天體驗的 ChatGPT 主要用來進行文本方面的處理&#xff0c;那么圖片生成有沒有這樣的 AI 工具 呢&#xff1f;答案是肯定的。例如&#xff1a;和菜頭公眾號的題圖和文章中的插圖大多都是使用 Stable-Diffusion 的 AI 圖形生成工具創作的。順著 Stable-Diffusion 搜索了下相…

滲透測試入門DVWA 教程1:環境搭建

首先歡迎新萌入坑。哈哈。你可能抱著好奇心或者疑問。DVWA 是個啥&#xff1f; DVWA是一款滲透測試的演練系統&#xff0c;在圈子里是很出名的。如果你需要入門&#xff0c;并且找不到合適的靶機&#xff0c;那我就推薦你用DVWA。 我們通常將演練系統稱為靶機&#xff0c;下面請…

指派問題(匈牙利算法)

問題描述&#xff1a; 在生活中經常遇到這樣的問題&#xff0c;某單位需完成n項任務&#xff0c;恰好有n個人可承擔這些任務。由于每人的專長不同&#xff0c;各人完成任務不同(或所費時間)&#xff0c;效率也不同。于是產生應指派哪個人去完成哪項任務&#xff0c;使完成n項任…

移動硬盤改臺式機硬盤_如何在臺式機或移動設備上離線使用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;容器的采用率也是逐年上…

從零基礎到拿到網易Java實習offer,談談我的學習經驗

微信公眾號【程序員江湖】作者黃小斜&#xff0c;斜杠青年&#xff0c;某985碩士&#xff0c;阿里研發工程師&#xff0c;于2018 年秋招拿到 BAT 頭條、網易、滴滴等 8 個大廠 offer個人擅長領域 &#xff1a;自學編程、技術校園招聘、軟件工程考研&#xff08;關注公眾號后回復…