整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          一文詳解應用安全防護ESAPI

          一文詳解應用安全防護ESAPI

          文分享自華為云社區《應用安全防護ESAPI-云社區-華為云》,作者: Uncle_Tom。

          1. ESAPI 簡介

          OWASP Enterprise Security API (ESAPI)是一個免費、開源的web應用程序安全控制庫,使程序員更容易編寫風險較低的應用程序。ESAPI庫旨在使程序員更容易對現有應用程序進行安全性改造。ESAPI庫也是新開發的堅實基礎。

          考慮到特定語言的差異,所有OWASP ESAPI版本都有相同的基本設計:

          • 有一組安全控制接口。例如,定義了傳遞給安全控件類型的參數類型。
          • 每個安全控制都有一個參考實現。例如:基于字符串的輸入驗證。例如,Java 的 org.owasp.ESAPI.reference.FileBasedAuthenticator 的 ESAPI,而其他參考實現則是成熟的企業級參考實現,例如,org.oasp.ESAPI.reference.DefaultEncoder 或 org.owasp.ESAPI.reference.DefaultValidator。
          • 每個安全控件都有自己的實現(可選)。這些類中可能包含應用程序邏輯,這些邏輯可能由您的組織開發或為您的組織而開發。例如:企業身份驗證。
          • 為使本項目盡可能易于傳播并使更多人能夠自由自用,本項目的源代碼使用了 BSD 許可證。本項目的文檔使用了知識共享署名許可證。你可以隨意使用、修改ESAPI,甚至將它包含在商業產品中。

          2. ESAPI 框架

          OWASP ESAPI 已經實現下面安全控件

          • 身份認證
          • 訪問控制
          • 輸入驗證
          • 輸出編碼/轉義
          • 密碼
          • 錯誤處理和日志
          • 通信安全
          • HTTP 安全
          • 安全配置

          ESAPI 框架

          ESAPI 覆蓋的OWASP Top 10

          3. ESAPI 的使用

          3.1. ESAPI 在 pom.xml 中的配置

          目前最新的版本是: 2.5.3.1, 可以直接在Maven 庫中找到。

          <!-- https://mvnrepository.com/artifact/org.owasp.esapi/esapi -->
          <dependency>
            <groupId>org.owasp.esapi</groupId>
            <artifactId>esapi</artifactId>
            <version>2.5.3.1</version>
            <exclusions>
              <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          
          <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
          <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
          </dependency>
          
          

          3.2. 注入類問題的防護

          網絡安全問題很大一部分是由于注入類問題造成的。這類問題主要是由于對外部輸入使用的過程中轉碼不當造成的,例如:SQL 注入、命令注入、跨站腳本等等。

          Encode(編碼器接口)包含了許多解碼輸入和編碼輸出的方法,這樣處理過的字符對于各種解釋器都是安全的。

          3.2.1. 防護:XSS 跨站腳本攻擊

          HTML編碼器(encodeForHTML)

          @Test
          void testEncodeForHTML() {
              String input="<a href='sdfs'></a> < script > alert('xss'); </ script >";
              String encodedString=ESAPI.encoder().encodeForHTML(input);
          
              LOG.info("EncodeForHTML: {}", encodedString);
          }
          

          輸出:

          EncodeForHTML: <a href='xss'></a> < script > alert('xss'); </ script >
          

          URL編碼器(encodeForURL)

          @Test
          void testEncodeForURL() {
              String input="/?callback=<script>alert('xss')</script>";
              String encodedString;
              try {
                  encodedString=ESAPI.encoder().encodeForURL(input);
                  LOG.info("EncodeForURL: {}", encodedString);
              } catch (EncodingException e) {
                  fail("Should not get exception:" + e.getMessage());
              }
          }
          

          輸出:

          EncodeForURL: %2F%3Fcallback%3D%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E
          

          3.2.2. 防護:SQL 注入

          @Test
          void testEncodeForSQL() {
              String userId="tom' or '1=1'";
              String sql="select * from user where user='"
                      + ESAPI.encoder().encodeForSQL(new MySQLCodec(MySQLCodec.Mode.STANDARD), userId) + "'";
          
              LOG.info("sql={}", sql);
          }
          

          輸出:

          sql=select * from user where user='tom\' or \'1\=1\''
          

          3.2.3. 防護:命令注入

          @Test
          void testEncodeForOS() {
              String input="dir & dir /s";
              String cmd=ESAPI.encoder().encodeForOS(new WindowsCodec(), input);
          
              LOG.info("cmd={}", cmd);
          }
          

          輸出:

          cmd=dir^ ^&^ dir^ ^/s
          

          3.3. 輸入校驗問題的防護

          網絡安全最大的威脅是外部輸入,所以對外部輸入的校驗對應用安全起著最大的防護作用。

          3.3.1. ESAPI的輸入校驗

          ESAPI有一個輸入校驗配置: validation.properties 給出了常用的校驗。

          validation.properties

          Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
          Validator.Email=^[A-Za-z0-9._%'-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
          Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
          Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&;%\\$#_]*)?$
          Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
          Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
          

          校驗接口

          /**
            * 輸入校驗
            * 
            * @param context 校驗內容
            * @param input 校驗輸入  
            * @param type 校驗類型,對應到 validation.properties 中的類型
            * @param maxLength 輸入字符最大長度校驗
            * @param allowNull 輸入字符Null值校驗,false - 不允許;true - 允許
            * @return 校驗失敗返回 false,校驗成功返回 true
            */
          boolean ESAPI.validator().getValidInput(String context, String input, String type, int maxLength, boolean allowNull);
          
          @Test
          void testValidatorEmail() {
              String input="xxxx.com";
              if (!ESAPI.validator().isValidInput("", input, "Email", 11, false)) {
                  LOG.error("Email validate fail!");
              } else {
                  LOG.info("Email is validate.");
              }
          }
          

          輸出:

          Email validate fail!
          

          4. ESAPI 使用和升級過程中常遇到的問題

          4.1. ExceptionInInitializerError 造成的 org.owasp.esapi.reference.DefaultEncoder CTOR threw exception

          org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
           at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
           at org.owasp.esapi.ESAPI.encoder(ESAPI.java:101)
           at com.test.esapi.EsapiTest.testUpdateJulietInfo_good(EsapiTest.java:19)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
          Caused by: java.lang.reflect.InvocationTargetException
          
           at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
           ... 71 more
          Caused by: java.lang.ExceptionInInitializerError
           at java.base/java.lang.Class.forName0(Native Method)
           at java.base/java.lang.Class.forName(Class.java:375)
           at org.owasp.esapi.util.ObjFactory.loadClassByStringName(ObjFactory.java:158)
           at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:81)
           at org.owasp.esapi.ESAPI.logFactory(ESAPI.java:139)
           at org.owasp.esapi.ESAPI.getLogger(ESAPI.java:155)
           at org.owasp.esapi.reference.DefaultEncoder.(DefaultEncoder.java:85)
           at org.owasp.esapi.reference.DefaultEncoder.(DefaultEncoder.java:109)
           at org.owasp.esapi.reference.DefaultEncoder.getInstance(DefaultEncoder.java:68)
           ... 76 more
          Caused by: org.owasp.esapi.errors.ConfigurationException: Unable to locate resource: esapi-java-logging.properties
           at org.owasp.esapi.logging.java.JavaLogFactory.readLoggerConfiguration(JavaLogFactory.java:128)
           at org.owasp.esapi.logging.java.JavaLogFactory.(JavaLogFactory.java:96)
           ... 85 more
          

          這個是 ESAPI 升級到 2.5.0.0 之后的版本時,最常碰到的問題。

          2.5.0.0 是 ESAPI 一個重要的變動版本,我們從版本變更信息中可以看到:

          • 此版本 ESAPI 全面放棄了被 Log4J 不斷的漏洞困擾的 Log4J 的支持,轉而使用 SLF4J。如果您的 ESAPI.Logger 屬性設置為使用 Log4J,如果不更改它,將引發模糊的 Exceptions 或 Errors,通常為 ExceptionInInitializerError。
          • 對 AntiSamy 升級到了 1.7.0,并支持了 AntiSamy 自定義的 AntiSamy-sapi.xml 文件。
          • 從上一個版本開始,此版本僅支持 Java 8 或更高版本。

          從這里可以看到 ExceptionInInitializerError 應該是變更日志組件造成的,熟悉的朋友會立刻想到 ESAPI 的配置文件 ESAPI.properties 里面給出所有組件的配置。

          從圖中 69 到 72 行可以看到,69 行的:

          ESAPI.Logger=org.owasp.esapi.logging.java.JavaLogFactory
          

          還是指向 org.owasp.esapi.logging.java.JavaLogFactory, 后面的注釋也提醒我們需要修改成 71 行的:

          ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory
          

          修改后問題解決。

          4.2. java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

          java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
           at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
           at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
           at java.base/java.lang.Class.getMethodsRecursive(Class.java:3543)
           at java.base/java.lang.Class.getMethod0(Class.java:3529)
           at java.base/java.lang.Class.getMethod(Class.java:2225)
           at org.owasp.esapi.util.ObjFactory.loadMethodByStringName(ObjFactory.java:196)
           at org.owasp.esapi.util.ObjFactory.findSingletonCreateMethod(ObjFactory.java:173)
           at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:84)
           at org.owasp.esapi.ESAPI.validator(ESAPI.java:192)
           at com.huawei.hwe.esapi.EsapiTest.testEsapi_encodeForURL(EsapiTest.java:23)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
          
          Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
           at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
           at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
           ... 79 more
          

          這個問題明顯是缺少了依賴庫。我們可以查看 Maven 庫關于 ESAPI 的定義和依賴信息。
          https://mvnrepository.com/artifact/org.owasp.esapi/esapi/2.5.3.1

          編譯依賴

          運行依賴

          從運行依賴可以看到需要:javax.servlet ? javax.servlet-api
          點開后面的版本號:3.1.0,就可以得到 javax.servlet-api 3.1.0 的 mvn 依賴配置,將這個配置加到工程的 pom.xml 文件中就可以了。

          在 pom.xml 中加入 javax.servlet-api 配置后,問題解決。

          <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>javax.servlet-api</artifactId>
              <version>3.1.0</version>
              <scope>provided</scope>
          </dependency>

          關注 #華為云開發者聯盟#點擊下方,第一時間了解華為云新鮮技術~

          華為云博客_大數據博客_AI博客_云計算博客_開發者中心-華為云

          服電機編碼器是一種安裝在伺服電機上面的產品,相當于一種傳感器,但是很多人并不清楚它的具體作用是怎樣的,下面就由匯川伺服電機編碼器廠家信博明的技術人員為大家講解一下:

          伺服電機編碼器是安裝在伺服電機上用來測量磁極位置和伺服電機轉角及轉速的一種傳感器,從物理介質的不同來分,伺服電機編碼器可以分為光電編碼器和磁電編碼器,另外旋轉變壓器也算一種特殊的伺服編碼器,市場上使用的基本上是光電編碼器,不過磁電編碼器作為后起之秀,有可靠,價格便宜,抗污染等特點。

          伺服電機編碼器的作用是用來反饋伺服電機旋轉的角度(位置)給伺服驅動器,伺服驅動器收到反饋信號后再來控制伺服電機旋轉,形成閉環控制,以達到精確控制伺服電機旋轉的位置以及速度。

          伺服電機編碼器除了可以反饋伺服電機的行程與PLC發出的脈沖做比較,從而達到一個閉環系統之外;還可以反饋伺服電機的轉速、轉子實際位置,以及讓驅動器識別電機的具體型號。給CPU做閉環精確控制,啟動的時候,CPU需要知道轉子的當前位置,也是靠伺服電機編碼器來給定的。

          伺服電機編碼器的作用是什么?就分享到這里。伺服電機編碼器為傳感器類的一種,主要用來偵測機械運動的速度、位置、角度、距離或計數,除了應用在產業機械外,許多的馬達控控制伺服馬達、BLDC伺服馬達均需配備編碼器以供馬達控制器作為換相、速度及位置的檢出所以應用范圍相當廣泛。

          深圳信博明自動化設備公司是匯川伺服電機代理商、匯川伺服電機廠家!提供匯川伺服驅動器、匯川伺變頻器、匯川伺服電機批發。網址:http://www.xbmcn.com/list-62-1.html

          管理器

          托管JavaScript庫并提供用于獲取和打包它們的工具。

          • npm - npm是JavaScript的包管理器。
          • Bower - 網絡包管理器。
          • component - 用于構建更好的Web應用程序的客戶端包管理。
          • spm - 全新的靜態包管理器。
          • jam - 使用以瀏覽器為中心且與RequireJS兼容的存儲庫的包管理器。
          • jspm - 無摩擦瀏覽器包管理。
          • 恩德 - 無庫圖書館。
          • volo - 從模板創建前端項目,添加依賴項并自動生成項目。
          • Duo - 下一代軟件包管理器,融合了Component,Browserify和Go的最佳創意,使組織和編寫前端代碼快速而輕松。
          • yarn - 快速,可靠,安全的依賴管理。

          加載器 (Loaders)

          • JavaScript的模塊或加載系統。
          • RequireJS - JavaScript的文件和模塊加載器。
          • browserify - 瀏覽器端require()node.js方式。
          • SeaJS - Web的模塊加載器。
          • HeadJS - HEAD中唯一的腳本。
          • curl - 一個小型,快速,可擴展的模塊加載器,可處理AMD,CommonJS模塊/ 1.1,CSS,HTML /文本和舊腳本。
          • lazyload - 微小的,無依賴的異步JavaScript和CSS加載器。
          • script.js - 異步JavaScript加載器和依賴項管理器。
          • systemjs - 符合AMD,CJS和ES6規范的模塊加載器。
          • LodJS - 基于AMD的模塊加載器。
          • ESL - 模塊加載器瀏覽器首先,支持懶惰定義和AMD。
          • modulejs - 輕量級JavaScript模塊系統。

          Bundlers

          • browserify - Browserify允許您通過捆綁所有依賴項來在瀏覽器中(“模塊”)。
          • webpack - 為瀏覽器打包CommonJs / AMD模塊。
          • Rollup - 下一代ES6模塊捆綁器。
          • Brunch - 具有簡單聲明配置的快速前端Web應用程序構建工具。
          • Parcel - 快速,零配置Web應用程序捆綁器。

          測試框架

          構架

          • mocha - 簡單,靈活,有趣的node.js和瀏覽器JavaScript測試框架。
          • jasmine - DOM-less簡單的JavaScript測試框架。
          • qunit - 一個易于使用的JavaScript單元測試框架。
          • jest - 無痛的JavaScript單元測試。
          • prova - 基于Tape和Browserify的節點和瀏覽器測試運行器
          • DalekJS - 使用JavaScript實現自動跨瀏覽器功能測試
          • Protractor - Protractor是AngularJS應用程序的端到端測試框架。
          • tape - 用于節點和瀏覽器的Tap生成測試工具。
          • TestCafe - 針對現代Web開發堆棧的自動瀏覽器測試。
          • ava - 未來的JavaScript測試運行器

          斷言

          • chai - node.js的BDD / TDD斷言框架和可以與任何測試框架配對的瀏覽器。
          • Enzyme - Enzyme是React的JavaScript測試實用程序,可以更容易地斷言,操作和遍歷React Components的輸出。
          • 反應測試庫 - 簡單而完整的React DOM測試實用程序,可以鼓勵良好的測試實踐。
          • Sinon.JS - 測試JavaScript的間諜,存根和模擬。
          • expect.js - Node.JS和瀏覽器的簡約BDD風格斷言。

          覆蓋

          • istanbul - 又一個JS代碼覆蓋工具。
          • blanket - 一個簡單的JavaScript代碼覆蓋庫。瀏覽器和nodejs易于安裝和使用。
          • JSCover - JSCover是一個測量JavaScript程序代碼覆蓋率的工具。

          Runner

          • phantomjs - Scriptable Headless WebKit。
          • slimerjs - 運行Gecko的類似PhantomJS的工具。
          • casperjs - PhantomJS和SlimerJS的導航腳本和測試實用程序。
          • zombie - 使用node.js進行瘋狂快速,全棧,無頭瀏覽器測試
          • totoro - 一個簡單而穩定的跨瀏覽器測試工具。
          • karma - JavaScript的壯觀測試賽跑者。
          • nightwatch - 基于node.js和selenium webdriver的UI自動化測試框架。
          • nightwatch - UI - JavaScript的下一代代碼測試堆棧。
          • yolpo - 瀏覽器中的語句JavaScript解釋器。

          質量檢查工具

          • prettier - Prettier是一個自以為是的代碼格式化程序。
          • JSHint - JSHint是一個有助于檢測JavaScript代碼中的錯誤和潛在問題的工具。
          • jscs - JavaScript代碼樣式檢查器。
          • jsfmt - 用于格式化,搜索和重寫JavaScript。
          • jsinspect - 檢測復制粘貼和結構相似的代碼。
          • buddy.js - JavaScript的幻數檢測。
          • ESLint - 一種完全可插入的工具,用于識別和報告JavaScript中的模式。
          • JSLint - 高標準,嚴格和固定的代碼質量工具,旨在保持語言的優秀部分。
          • JavaScript標準樣式 - 意見,無配置樣式指南,樣式檢查器和格式化程序

          MVC框架和庫

          • angular.js - 針對網絡應用增強的HTML。
          • aurelia - 適用于移動,桌面和Web的JavaScript客戶端框架。
          • backbone - 為您的JS應用程序提供模型,視圖,集合和事件的一些骨干。
          • ember.js - 用于創建雄心勃勃的Web應用程序的JavaScript框架。
          • meteor - 一個超簡單,數據庫無處不在的數據線上純javascript Web框架。
          • ractive - 下一代DOM操作。
          • vue - 用于構建交互式界面的直觀,快速和可組合的MVVM。
          • knockout - Knockout可以更輕松地使用JavaScript創建豐富的響應式UI。
          • spine - 用于構建JavaScript應用程序的輕量級MVC庫。
          • espresso.js - 用于制作用戶界面的最小JavaScript庫。
          • canjs - 可以做JS,更好,更快,更容易。
          • react - 用于構建用戶界面的庫。它具有聲明性,高效性和極其靈活性。適用于虛擬DOM。
          • hyperapp - 用于構建前端應用程序的1kb JavaScript庫。
          • preact - 使用相同的ES6 API快速3kb React替代方案。組件和虛擬DOM。
          • nativescript - 使用JavaScript構建真正的原生跨平臺iOS和Android應用程序。
          • react-native - 使用React構建本機應用程序的框架。
          • riot - 類似React的庫,但體積非常小。
          • thorax - 加強你的骨干。
          • chaplin - 使用Backbone.js庫的JavaScript應用程序的體系結構。
          • marionette - Backbone.js的復合應用程序庫,旨在簡化大型JavaScript應用程序的構建。
          • ripple - 構建反應性視圖的微小基礎。
          • rivets - 輕量級和強大的數據綁定+模板解決方案。
          • derby - MVC框架,可以輕松編寫在Node.js和瀏覽器中運行的實時協作應用程序。
          • derby-awesome - 一系列令人敬畏的德比組件
          • way.js - 簡單,輕量,持久的雙向數據綁定。
          • mithril.js - Mithril是一個客戶端MVC框架(輕量級,健壯,快速)。
          • jsblocks - jsblocks是更好的MV-ish框架。
          • LiquidLava - 用于構建用戶界面的透明MVC框架。
          • feathers - 明天應用程序的極簡主義實時JavaScript框架。
          • Keo - 具有Shadow DOM支持的功能無狀態React組件。
          • atvjs - 使用純JavaScript快速開發Apple TV應用程序

          基于Node的CMS框架

          • KeystoneJS - 功能強大的CMS和Web應用程序框架。
          • Reaction Commerce - 反應式CMS,實時架構和設計。
          • Ghost - 簡單,強大的發布平臺。
          • Apostrophe - CMS內容編輯和基本服務。
          • We.js - 實時應用程序,網站或博客的框架。
          • Hatch.js - 具有社交功能的CMS平臺。
          • TaracotJS - 基于Node.js的快速簡約CMS。
          • Nodizecms - 適用于CoffeeScript愛好者的CMS。
          • Cody - CMS與WSYWYG編輯器。
          • PencilBlue - CMS和博客平臺。

          模板引擎

          模板引擎允許您執行字符串插值。

          • mustache.js - JavaScript中{{mustaches}}的最小模板。
          • handlebars.js - Mustache模板語言的擴展。
          • nunjucks - 來自Mozilla的JavaScript豐富而強大的模板語言。
          • hogan.js - Mustache模板語言的編譯器。
          • doT - nodejs和瀏覽器的最快+簡潔的JavaScript模板引擎。
          • dustjs - 瀏覽器和node.js的異步模板。
          • eco - 嵌入式CoffeeScript模板。
          • JavaScript-Templates - <1KB輕量級,快速且功能強大的JavaScript模板引擎,具有零依賴性。
          • t.js - 一個小的JavaScript模板框架,約400字節gzip壓縮。
          • Pug - 用于nodejs的強大,優雅,功能豐富的模板引擎。 (以前稱為玉)
          • EJS - 有效的JavaScript模板。
          • xtemplate - 節點和瀏覽器的可擴展模板引擎庫
          • marko - 一個快速,輕量級,基于HTML的模板引擎,用于Node.js和瀏覽器,具有異步,流,自定義標簽和CommonJS模塊作為編譯輸出。
          • swig - 一個簡單,功能強大且可擴展的Node.js和基于瀏覽器的JavaScript模板引擎。

          數據可視化

          用于Web的數據可視化工具。

          • d3 - 用于HTML和SVG的JavaScript可視化庫。
          • metrics-graphics - 針對簡潔,有原則的數據圖形和布局進行優化的庫。
          • pykcharts.js - 精心設計的d3.js圖表??,沒有d3.js的復雜性。
          • three.js - JavaScript 3D庫。
          • Chart.js - 使用標記的簡單HTML5圖表。
          • paper.js - 瑞士軍刀矢量圖形腳本 - 使用HTML5 Canvas移植到JavaScript和瀏覽器的Scriptographer。
          • fabric.js - JavaScript Canvas Library,SVG-to-Canvas(&canvas-to-SVG)Parser。
          • peity - 漸進式條形圖,折線圖和餅圖。
          • raphael - JavaScript矢量庫。
          • echarts - 企業圖表。
          • vis - 基于瀏覽器的動態可視化庫。
          • two.js - 用于網絡的渲染器不可知的二維繪圖api。
          • g.raphael - Rapha?l的圖表。
          • sigma.js - 專用于圖形繪制的JavaScript庫。
          • arbor - 使用Web worker和jQuery的圖形可視化庫。
          • cubism - 用于可視化時間序列的D3插件。
          • dc.js - 多維圖表,可與使用d3.js渲染的交叉過濾器本機工作
          • vega - 可視化語法。
          • processing.js - Processing.js使您的數據可視化使用Web標準并且沒有任何插件。
          • envisionjs - 動態HTML5可視化。
          • rickshaw - 用于創建交互式實時圖的JavaScript工具包。
          • flot - jQuery的迷人JavaScript圖表。
          • morris.js - 漂亮的時間序列線圖。
          • nvd3 - 為d3.js構建可重用的圖表和圖表組件。
          • svg.js - 一個用于操作和動畫SVG的輕量級庫。
          • heatmap.js - 基于HTML5畫布的熱圖的JavaScript庫。
          • jquery.sparkline - jQuery JavaScript庫的插件,可直接在瀏覽器中生成小的迷你圖表。
          • xCharts - 基于D3的庫,用于構建自定義圖表和圖形。
          • trianglify - 低聚風格背景發生器與d3.js.
          • d3-cloud - 在JavaScript中創建單詞云。
          • d4 - D3的友好可重用圖表DSL。
          • dimple.js - 由d3支持的簡單業務分析圖表。
          • chartist-js - 簡單的響應式圖表。
          • epoch - 通用實時圖表庫。
          • c3 - 基于D3的可重用圖表庫。
          • BabylonJS - 使用HTML 5和WebGL構建3D游戲的框架。
          • recharts - 使用React和D3構建的重新定義的圖表庫。
          • GraphicsJS - 一個輕量級JavaScript圖形庫,具有基于SVG / VML技術的直觀API。
          • mxGraph - 圖表庫,可以快速創建交互式圖形和圖表應用程序,這些應用程序可以在其供應商支持的任何主要瀏覽器中本機運行。
          • 還有一些很棒的商業庫,如amchart,anychart,plotly和highchart。

          時間線

          • TimelineJS v3 - 用JavaScript構建的講故事時間軸。
          • timesheet.js - 簡單HTML5和CSS3時間表的JavaScript庫。

          電子表格

          • HANDSONTABLE - Handsontable是面向開發人員的JavaScript / HTML5電子表格庫

          編輯器

          • ace - Ace(Ajax.org Cloud9編輯器)。
          • CodeMirror - 瀏覽器內代碼編輯器。
          • esprima - 用于多功能分析的ECMAScript解析基礎設施。
          • quill - 帶有API的跨瀏覽器的富文本編輯器。
          • medium-editor - Medium.com WYSIWYG編輯器克隆。
          • pen - 享受現場編輯(+Markdown)。
          • jquery-notebook - 一個簡單,干凈,優雅的文本編輯器。靈感來自Medium的精彩。
          • bootstrap-wysiwyg - 與Tiny bootstrap兼容的WYSIWYG富文本編輯器。
          • ckeditor-releases - 適合所有人的最佳網絡文本編輯器。
          • editor - Markdown編輯。仍處于發展階段。
          • EpicEditor - 一個可嵌入的JavaScript Markdown編輯器,具有分屏全屏編輯,實時預覽,自動草稿保存,離線支持等功能。
          • jsoneditor - 一個基于Web的工具,用于查看,編輯和格式化JSON。
          • vim.js - 帶有持久性?/ .vimrc的Vim的JavaScript端口。
          • Squire - HTML5富文本編輯器。
          • TinyMCE - JavaScript Rich Text編輯器。
          • trix - 用于日常寫作的富文本編輯器。通過Basecamp。
          • Trumbowyg - 一個輕量級且令人驚嘆的WYSIWYG JavaScript編輯器。
          • Draft.js - 用于構建文本編輯器的React框架。
          • bootstrap-wysihtml5 - 簡單,漂亮的所見即所得的編輯器
          • wysihtml5 - 基于HTML5的開源富文本編輯器和漸進增強方法。使用復雜的安全性概念,旨在通過防止不可維護的標簽湯和內聯樣式來生成完全有效的HTML5標記。
          • raptor-editor - Raptor,HTML5 WYSIWYG內容編輯器!
          • popline - Popline是一個HTML5富文本編輯器工具欄。

          文檔

          • DevDocs是一個一體化的API文檔閱讀器,具有快速,有條理和一致的界面。
          • dexy是一種自由形式的文化文檔工具,用于編寫包含代碼的任何類型的技術文檔。
          • docco是一個快速,骯臟,百行,文化編程風格的文檔生成器。
          • styledocco從樣式表生成文檔和樣式指南文檔。
          • Ronn制作手冊。它將簡單的,人類可讀的文本文件轉換為roff用于終端顯示,也轉換為HTML用于Web。
          • dox是一個用節點編寫的JavaScript文檔生成器。 Dox不再為您的文檔生成固定的結構或樣式,它只是為您提供JSON表示,允許您使用markdown和JSDoc樣式的標記。
          • jsdox是一個JSDoc3到Markdown文檔生成器。
          • ESDoc是一個很好的JavaScript文檔生成器。
          • YUIDoc是一個Node.js應用程序,它使用類似于Javadoc和Doxygen等工具的語法,從源代碼中的注釋生成API文檔。
          • coddoc是一個jsdoc解析庫。 Coddoc的不同之處在于,它允許用戶通過使用coddoc.addTagHandler和coddoc.addCodeHandler添加標記和代碼解析器,從而可以輕松擴展。 coddoc還解析了在API中使用的源代碼。
          • sphinx是一款可輕松創建智能和精美文檔的工具
          • 使用JSDoc
          • Beautiful docs是一個基于markdown文件的文檔查看器。
          • documentation.js - 支持ES2015 +和流程注釋的API文檔生成器。
          • jsduck - 為Sencha JavaScript框架制作的API文檔生成器,但也可用于其他框架。

          文件

          用于處理文件的庫。

          • Papa Parse - 一個功能強大的CSV庫,支持解析CSV文件/字符串并導出為CSV。
          • jBinary - 具有聲明性語法的二進制文件的高級I / O(加載,解析,操作,序列化,保存),用于描述文件類型和數據結構。
          • diff2html - Git diff輸出解析器和漂亮的HTML生成器。
          • jsPDF - JavaScript PDF生成。
          • PDF.js - JavaScript中的PDF閱讀器。

          函數編程

          函數式編程庫,用于擴展JavaScript的功能。

          • underscore - JavaScript的實用程序_腰帶。
          • lodash - 提供一致性,定制,性能和附加功能的實用程序庫。
          • Sugar - 用于處理本機對象的JavaScript庫。
          • lazy.js - 像下劃線,但更懶。
          • ramda - JavaScript程序員的實用函數庫。
          • mout - 模塊化JavaScript實用程序。
          • mesh - Streamable數據同步實用程序。
          • preludejs - JavaScript的硬核函數式編程。

          反應式編程

          反應式編程庫,以擴展JavaScript的功能。

          • RxJs - JavaScript的反應性擴展。
          • Bacon - 用于JavaScript的FRP(功能反應式編程)庫。
          • Kefir - 針對JavaScript的FRP庫,受到Bacon.js和RxJS的啟發,專注于高性能和低內存消耗。
          • Highland - 重新思考JavaScript實用程序帶,Highland輕松管理同步和異步代碼,僅使用標準JavaScript和類似Node的Streams。
          • Most.js - 高性能FRP庫。
          • MobX - 用于簡單,可擴展狀態管理的TFRP庫。
          • Cycle.js - 一個功能強大且反應靈敏的JavaScript庫,用于更清晰的代碼。

          數據結構

          數據結構庫構建更復雜的應用程序。

          • immutable-js - 不可變數據集合,包括序列,范圍,重復,映射,OrderedMap,Set和稀疏向量。
          • mori - 一個庫,用于使用ClojureScript的持久數據結構,并從舒適的vanilla JavaScript中支持API。
          • 存儲桶 - 用JavaScript編寫的完整,經過全面測試和記錄的數據結構庫。
          • hashmap - 支持任何類型密鑰的簡單hashmap實現。

          日期

          日期庫。

          • moment - 在JavaScript中解析,驗證,操作和顯示日期。
          • moment-timezone - 時區支持moment.js。
          • jquery-timeago - 一個jQuery插件,可以輕松支持自動更新模糊時間戳(例如“4分鐘前”)。
          • timezone-js - 啟用時區的JavaScript Date對象。使用Olson zoneinfo文件獲取時區數據。
          • date - 人類的日期()。
          • ms.js - 微小的毫秒轉換實用程序。
          • countdown.js - 超級簡單的倒計時。
          • timeago.js - 簡單的庫(小于2kb)用于格式化日期與*** time ago語句。
          • fecha - 輕量級日期格式化和解析(~2KB)。意味著要取代moment.js的解析和格式化功能。
          • date-fns - 現代JavaScript日期實用程序庫。
          • map-countdown - 基于Google地圖構建的瀏覽器倒計時

          字符串

          字符串庫。

          • voca - 終極JavaScript字符串庫
          • selecting - 允許您訪問用戶選擇的文本的庫。
          • underscore.string - Underscore.js JavaScript庫的字符串操作擴展。
          • string.js - 額外的JavaScript字符串方法。
          • he - 用JavaScript編寫的強大的HTML實體編碼器/解碼器。
          • multiline - JavaScript中的多行字符串。
          • query-string - 解析和字符串化URL查詢字符串。
          • URI.js - JavaScript URL變異庫。
          • jsurl - 使用JavaScript進行輕量級URL操作。
          • sprintf.js - sprintf實現。
          • url-pattern - 比url和其他字符串的正則表達式字符串匹配模式更容易。將字符串轉換為數據或數據為字符串。

          數字

          • Numeral-js - 用于格式化和操作數字的JavaScript庫。
          • chance.js - JavaScript中的隨機生成器助手。可以生成數字,字符串等。
          • odometer - 輕松過渡數字。
          • accounting.js - 用于數字,貨幣和貨幣格式的輕量級JavaScript庫 - 完全可本地化,零依賴性。
          • money.js - 一個小的(1kb)JavaScript貨幣轉換庫,用于web和nodeJS。
          • Fraction.js - JavaScript的有理數字庫。
          • Complex.js - JavaScript的復數庫。
          • Polynomial.js - JavaScript的多項式庫。

          存儲

          • store.js - 所有瀏覽器的LocalStorage包裝器,不使用cookie或flash。使用localStorage,globalStorage和userData行為。
          • localForage - 改進的離線存儲。使用簡單但功能強大的API包裝IndexedDB,WebSQL或localStorage。
          • jStorage - jStorage是一個簡單的鍵/值數據庫,用于在瀏覽器端存儲數據。
          • cross-storage - 跨域本地存儲,具有權限。
          • basket.js - 用于使用localStorage緩存和加載腳本的腳本和資源加載器。
          • bag.js - 一個緩存腳本和資源加載器,類似于basket.js,但具有額外的k / v接口和localStorage / websql / indexedDB支持。
          • basil.js - 缺少的JavaScript智能持久層。
          • jquery-cookie - 一個簡單,輕量級的jQuery插件,用于讀取,寫入和刪除cookie。
          • js-cookie - 用于處理瀏覽器cookie的簡單輕量級JavaScript API。
          • Cookie - JavaScript客戶端Cookie操作庫。
          • DB.js - 基于Promise的IndexDB Wrapper庫。
          • lawnchair.js - 簡單的客戶端JSON存儲。
          • sql.js - 通過Emscripten編譯為JavaScript的SQLite。

          Color(顏色)

          • randomColor - JavaScript的顏色生成器。
          • chroma.js - 用于各種顏色操作的JavaScript庫。
          • color - JavaScript顏色轉換和操作庫。
          • colors - 網絡上顏色的更智能默認值。
          • PleaseJS - 用于創建隨機賞心悅目的顏色和配色方案的JavaScript庫。
          • TinyColor - 快速,小巧的顏色處理和JavaScript轉換。
          • Vibrant.js - 從圖像中提取突出的顏色。

          I18n和L10n

          本地化(l10n)和國際化(i18n)JavaScript庫。

          • i18next - 使用JavaScript輕松實現國際化(i18n)。
          • polyglot - tiny i18n helper library。
          • babelfish - i18n具有人性化的API并內置復數支持。
          • ttag - 基于ES6標記模板和良好的舊GNU gettext的現代javascript i18n本地化庫。

          控制流

          • async - 節點和瀏覽器的異步實用程序。
          • q - 用于在JavaScript中創建和編寫異步promise的工具。
          • step - 一個異步控制流庫,可以輕松地逐步執行邏輯。
          • contra - 具有功能性的異步流量控制。
          • Bluebird - 功能齊全的承諾庫,專注于創新功能和性能。
          • when - 一個可靠,快速的Promises / A +和when()實現,以及其他異步好東西。
          • ObjectEventTarget - 提供一個原型,為事件偵聽器添加支持(在瀏覽器上可用的DOMElements中具有相同的EventTarget行為)。

          路由

          • director - 一個用于JavaScript的小而同構的URL路由器。
          • page.js - 受Express路由器啟發的微客戶端路由器(~1200字節)。
          • pathjs - 用于Web瀏覽器的簡單輕量級路由。
          • crossroads- JavaScript路線。
          • davis.js - 使用pushState的RESTful可降級JavaScript路由。

          安全

          • DOMPurify - 用于HTML,MathML和SVG的僅限DOM,超快速,超級容忍的XSS清理程序。
          • js-xss - 使用白名單指定的配置清理不受信任的HTML(以防止XSS)。
          • xss-filters - 雅虎安全的XSS過濾器。

          日志

          • log - 帶有樣式的Console.log。
          • Conzole - 一個用JavaScript構建的調試面板,它在頁面內顯示的面板中包裝JavaScript本機控制臺對象方法和功能。
          • console.log-wrapper - 在任何瀏覽器中清楚地記錄到控制臺。
          • loglevel - JavaScript的最小輕量級日志記錄,添加可靠的日志級別方法來包裝任何可用的console.log方法。
          • minilog - 使用Stream-API后端的輕量級客戶端和服務器端日志記錄。
          • storyboard - 通用日志庫+ Chrome擴展;它允許您在一個位置查看由用戶操作觸發的所有客戶端和服務器任務。

          正則表達式

          • RegEx101 - 用于JavaScript的在線正則表達式測試器和調試器。還支持Python,PHP和PCRE。
          • RegExr - 基于HTML / JS的工具,用于創建,測試和學習正則表達式。
          • RegExpBuilder - 使用鏈式方法創建正則表達式。

          語音控制

          • annyang - 一個JavaScript庫,用于使用語音識別向您的站點添加語音命令。
          • voix.js - 一個JavaScript庫,用于為您的網站,應用或游戲添加語音命令。

          API

          • axios - 基于Promise的HTTP客戶端,用于瀏覽器和node.js.
          • bottleneck- 一種強大的速率限制器,可以輕松控制節流。
          • oauth-signature-js - 用于節點和瀏覽器的JavaScript OAuth 1.0a簽名生成器。
          • amygdala - 用于JavaScript驅動的Web應用程序的RESTful HTTP客戶端。
          • jquery.rest - 一個jQuery插件,可以輕松使用RESTful API。
          • Rails Ranger - Ruby on Rails API的固定REST客戶端。

          流(Streaming)

          • Tailor - 前端微服務的流媒體布局服務,受Facebook的BigPipe啟發。

          視覺檢測

          • tracking.js - 網絡上計算機視覺的現代方法。
          • ocrad.js - 通過Emscripten在JavaScript中進行OCR。

          機器學習

          • ConvNetJS - JavaScript中的深度學習。在您的瀏覽器中訓練卷積神經網絡(或普通的)。
          • DN2A - 數字神經網絡架構。
          • Brain.js - JavaScript中的神經網絡。
          • Mind.js - 一個靈活的神經網絡庫。
          • Synaptic.js - node.js和瀏覽器的免架構神經網絡庫。
          • TensorFlow.js - 用于在瀏覽器和Node.js上訓練和部署ML模型的JavaScript庫。
          • ml5.js - 友好的網絡機器學習。

          瀏覽器檢測

          • bowser - 瀏覽器探測器。

          基準

          • benchmark.js - 基準測試庫。正如在jsPerf.com上使用的那樣。
          • matcha - 以咖啡因為導向,簡單化的基準測試方法。

          代碼突出顯示

          • Highlight.js - JavaScript語法高亮顯示。
          • PrismJS - 輕巧,強大,優雅的語法高亮。

          加載狀態

          用于指示負載狀態的庫。

          • Mprogress.js - 創建Google Material Design進度線性欄。
          • NProgress - 用于Ajax'y應用程序的超薄進度條。
          • Spin.js - 旋轉活動指標。
          • progress.js - 為頁面上的每個對象創建和管理進度條。
          • progressbar.js - 具有動畫SVG路徑的美麗且響應迅速的進度條。
          • pace - 自動為您的網站添加進度條。
          • topbar - Tiny&beautiful全站點進度指示器。
          • nanobar - 非常輕量級的進度條。沒有jQuery。
          • PageLoadingEffects - 使用SVG動畫顯示新內容的現代方式。
          • SpinKit - 使用CSS動畫的加載指示符的集合。
          • Ladda - 帶內置裝載指示器的按鈕。
          • css-loaders - 使用CSS動畫加載微調器的集合
          • 除了庫之外,還有Codepen上的Collection,以及Ajaxload,Preloaders和CSSLoad等生成器。

          驗證

          • Parsley.js - 無需編寫單行JavaScript即可驗證表單前端。
          • jquery-validation - jQuery Validation Plugin。
          • validator.js - 字符串驗證和清理。
          • validate.js - 受CodeIgniter啟發的輕量級JavaScript表單驗證庫。
          • validatr - 跨瀏覽器HTML5表單驗證。
          • FormValidation - 驗證表單字段的最佳jQuery插件。以前的BootstrapValidator。
          • is.js - 檢查類型,正則表達式,狀態,時間等。
          • FieldVal - 多用途驗證庫。支持同步和異步驗證。

          鍵盤包裝

          • mousetrap - 用于處理JavaScript中鍵盤快捷鍵的簡單庫。
          • keymaster - 用于定義和分派鍵盤快捷鍵的簡單微庫。
          • Keypress - 鍵盤輸入捕獲實用程序,其中任何鍵都可以是修飾鍵。
          • KeyboardJS - 用于綁定鍵盤組合的JavaScript庫,沒有鍵碼和鍵組合沖突的痛苦。
          • jquery.hotkeys - jQuery Hotkeys讓您可以在代碼中的任何位置查看鍵盤事件,幾乎可以支持任何組合鍵。
          • jwerty - 鍵盤事件的真棒處理。

          旅游和指南

          • intro.js - 為您的網站和項目提供新功能介紹和分步用戶指南的更好方法。
          • shepherd - 引導您的用戶瀏覽您的應用。
          • bootstrap-tour - 使用Twitter Bootstrap Popovers快速輕松地進行產品導覽。
          • tourist - - 為您的應用程序提供簡單靈活的旅游。
          • chardin.js - 適用于您的應用的簡單疊加說明。
          • pageguide - 使用jQuery和CSS3的網頁元素的交互式指南。
          • hopscotch - 一個框架,使開發人員可以輕松地將產品導覽添加到他們的頁面。
          • joyride - jQuery feature tour插件。
          • focusable - 設置聚焦于DOM元素的聚光燈,將疊加層添加到頁面的其余部分。

          通知

          • iziToast - 優雅,響應靈活,輕量級的通知插件,沒有依賴關系。
          • messenger - 適用于您應用的Growl風格的提醒和消息。
          • noty - jQuery通知插件。
          • pnotify - Bootstrap,jQuery UI和Web Notifications Draft的JavaScript通知。
          • toastr - 簡單的JavaScript吐司通知。
          • humane-js - 一個簡單,現代的瀏覽器通知系統。
          • smoke.js - 針對JavaScript的框架無關的樣式警報系統。
          • notie - 沒有依賴關系的簡單通知和輸入。

          滑塊

          • Swiper - 移動觸摸滑塊和框架,帶有硬件加速轉換。
          • slick - 您需要的最后一個旋轉木馬。
          • slidesJs - 是一個響應式幻燈片插件,適用于JQuery(1.7.1+),具有觸摸和CSS3過渡等功能
          • FlexSlider - 一個非常棒的,完全響應的jQuery滑塊插件。
          • unslider - 最簡單的jQuery滑塊。
          • sly - 用于單向滾動的JavaScript庫,具有基于項目的導航支持。
          • vegas - 一個jQuery插件,可以為您的網頁添加漂亮的全屏背景。它甚至允許幻燈片播放。
          • Sequence - 用于創建響應式滑塊,演示文稿,橫幅和其他基于步驟的應用程序的CSS動畫框架。
          • reveal.js - 使用HTML輕松創建精美演示文稿的框架。
          • impress.js - 這是一個基于現代瀏覽器中CSS3轉換和轉換功能的演示框架,并受到prezi.com背后的想法的啟發。
          • bespoke.js - DIY演示微框架
          • Strut - Strut - 一個Impress.js和Bespoke.js演示編輯器
          • PhotoSwipe - 適用于移動和桌面的JavaScript圖像庫,模塊化,獨立于框架。
          • jcSlider - 一個帶有CSS動畫的響應式滑塊jQuery插件。
          • basic-jquery-slider - 使用簡單,主題簡單,易于定制。
          • jQuery.adaptive-slider - 一個帶有自適應彩色figcaption和導航的滑塊的jQuery插件。
          • slidr - 添加一些幻燈片效果。
          • Flickity - 觸摸,響應,可滑動的畫廊。
          • Glide.js - 響應和觸摸友好的jQuery滑塊。它簡單,輕便,快速。
          • jQuery.adaptive-slider - 一個帶有自適應彩色figcaption和導航的滑塊的jQuery插件。
          • Embla Carousel - 用于Web的可擴展低級旋轉木馬,用TypeScript編寫。

          范圍滑塊

          • Ion.RangeSlider - 功能強大且易于定制的范圍滑塊,具有多種選項和皮膚支持。
          • jQRangeSlider - 支持日期的JavaScript滑塊選擇器。
          • noUiSlider - 輕量級,高度可定制的范圍滑塊,無膨脹。
          • rangeslider.js - HTML5輸入范圍滑塊元素polyfill。

          表單小部件

          輸入

          • typeahead.js - 一個快速且功能齊全的自動完成庫。
          • tag-it - 用于處理多標記字段以及標記建議/自動完成的jQuery UI插件。
          • At.js - 添加GitHub就像提到你的應用程序的自動完成一樣。
          • Placeholders.js - HTML5占位符屬性的JavaScript polyfill。
          • fancyInput - 使用CSS3效果在輸入字段中輸入樂趣。
          • jQuery-Tags-Input - 使用這個jQuery插件將一個簡單的文本輸入神奇地轉換為一個很酷的標簽列表。
          • vanilla-masker - 純JavaScript掩碼輸入。
          • Ion.CheckRadio - 用于樣式復選框和單選按鈕的jQuery插件。有皮膚支持。
          • awesomplete - 超輕量級,可用,美觀的自動完成,零依賴。 -

          日歷

          • pickadate.js - 移動友好,響應迅速,輕量級的jQuery日期和時間輸入選擇器。
          • bootstrap-datepicker - 來自Stefan Petre(eyecon.ro)的@twitter bootstrap的日期選擇器,由@eternicode改進。
          • Pikaday - 一個令人耳目一新的JavaScript Datepicker - 輕量級,無依賴關系,模塊化CSS。
          • fullcalendar - 全尺寸拖放事件日歷(jQuery插件)。
          • rome - 可定制的日期(和時間)選擇器。免費依賴,選擇加入UI。
          • datedropper - datedropper是一個jQuery插件,提供了一種快速簡便的方法來管理輸入字段的日期。

          選擇

          • selectize.js - Selectize是文本框和選擇框的混合體。這是基于jQuery的,它具有自動完成和本機感鍵盤導航;對標記,聯系人列表等有用
          • select2 - 基于jQuery的選擇框替換。它支持搜索,遠程數據集和無限滾動結果。
          • chosen - 一個庫,用于制作更加友好的長而笨重的選擇框。

          文件上傳器

          • jQuery-File-Upload - 文件上傳小部件,包含多個文件選擇,拖放支持,進度條,驗證和預覽圖像,jQuery的音頻和視頻。
          • dropzone - Dropzone是一個易于使用的拖放庫。它支持圖像預覽并顯示很好的進度條。
          • flow.js - 一個JavaScript庫,通過HTML5 File API提供多個同步,穩定,容錯和可恢復/可重新啟動的文件上傳。
          • fine-uploader - 多文件上傳插件,帶有進度條,拖放,直接上傳到S3。
          • FileAPI - 一組用于處理文件的JavaScript工具。 Multiupload,drag'n'drop和chunked文件上傳。圖像:EXIF裁剪,調整大小和自動方向。
          • plupload - 用于處理文件上傳的JavaScript API,它支持多文件選擇,文件類型過濾,請求分塊,客戶端圖像縮放等功能,并使用不同的運行時來實現此功能,如HTML 5,Silverlight和Flash。

          其他

          • form - jQuery Form Plugin。
          • Garlic.js - 自動保留表單的文本并在本地選擇字段值,直到提交表單。
          • Countable - 一個JavaScript函數,用于向HT添加實時段落,字和字符計數

          模態和彈出窗口

          • Magnific-Popup - 輕巧且反應靈敏的燈箱腳本,專注于性能。
          • jquery-popbox - jQuery PopBox UI元素。
          • jquery.avgrund.js - 一個jQuery插件,帶有彈出窗口的新模態概念。
          • vex - 一個高度可配置且易于設計的現代對話庫。
          • bootstrap-modal - 擴展默認的Bootstrap Modal類。響應,可堆疊,ajax等。
          • css-modal - 由純CSS構建的模態。
          • jquery-popup-overlay - 用于響應和可訪問的模態窗口和工具提示的jQuery插件。
          • SweetAlert - JavaScript警報的絕佳替代品。
          • baguetteBox.js - 用純JavaScript編寫的簡單易用的lightbox腳本。
          • colorbox - 用于jQuery的輕量級可定制燈箱插件。
          • fancyBox - 一種工具,為您的網頁上的圖像,html內容和多媒體添加縮放功能提供了一種漂亮而優雅的方式。
          • swipebox - 可觸摸的jQuery燈箱
          • jBox - jBox是一個功能強大且靈活的jQuery插件,可以處理所有彈出窗口,工具提示,通知等。

          滾動

          • scrollMonitor - 滾動時監視元素的簡單快速API。
          • eadroom - 給你的頁面一些空間。隱藏您的標題,直到您需要它。
          • onepage-scroll - 使用One Page Scroll插件創建類似Apple的單頁卷軸網站(iPhone 5S網站)。
          • iscroll - iScroll是一款高性能,占用空間小,無依賴,多平臺的JavaScript滾動條。
          • skrollr - 適用于移動設備(Android + iOS)和桌面的獨立視差滾動庫。沒有jQuery。
          • parallax - 對智能設備方向作出反應的視差引擎。
          • stellar.js - 視差滾動變得容易。
          • plax - jQuery powered parallaxing。
          • jparallax - 用于創建交互式視差效果的jQuery插件。
          • fullPage - 一個簡單易用的插件,用于創建全屏滾動網站(也稱為單頁網站)。
          • ScrollMenu - 一個替換舊的無聊滾動條的新界面。
          • Clusterize.js - Tiny vanilla JS插件,可輕松顯示大型數據集。
          • simpleParallax - 簡單而小巧的JavaScript庫,可在任何圖像上添加視差動畫

          菜單

          • jQuery-menu-aim - 用戶光標瞄準特定下拉菜單項時觸發事件的jQuery插件。用于制作像亞馬遜這樣的響應式大型下拉菜單。
          • jQuery contextMenu - contextMenu manager。
          • Slideout - 用于移動網絡應用的響應式觸摸滑動導航菜單。
          • 滑動和滑動 - 可與touchSwipe庫配合使用的滑動滑動菜單。

          表/網格

          • jTable - 一個用于創建基于AJAX的CRUD表的jQuery插件。
          • DataTables - (jQuery插件)它是一個高度靈活的工具,基于漸進增強的基礎,并將為任何HTML表添加高級交互控件。
          • Tabulator - (jQuery插件)一個非常靈活的庫,可以從任何JSON數據源或現有HTML表創建具有一系列交互功能的表。
          • Bootstrap表 - 對流行的Bootstrap框架的擴展,用于創建適合您站點樣式的表,而無需額外的標記。
          • floatThead - (jQuery插件)在正文中滾動時鎖定任何表的標題。適用于任何表,不需要自定義html或CSS。
          • Masonry - 級聯網格布局庫。
          • Packery - 使用bin-packing算法的網格布局庫。可用于可拖動布局。
          • Isotope- 可過濾,可排序的網格布局庫。可以實現Masonry,Packery和其他布局。
          • flexboxgrid - 基于CSS3 flexbox的網格。

          構架

          • 語義UI - 具有許多主題和元素的UI工具包。
          • w2ui - 一組用于數據驅動的Web應用程序前端開發的jQuery插件。
          • 流動性 - 世界上最小的完全響應的CSS框架。
          • Ink - SAPO使用的HTML5 / CSS3框架,用于快速有效的網站設計和原型設計。

          Boilerplates

          • html5-boilerplate - 一個專業的前端模板,用于構建快速,健壯且適應性強的Web應用程序或站點。
          • mobile-boilerplate - 一個前端模板,可幫助您構建快速,現代的移動Web應用程序。
          • webplate - 一個非常棒的前端框架,讓您可以專注于構建您的網站或應用程序,同時保持非常好用。
          • Cerberus - 響應式HTML電子郵件的一些簡單但可靠的模式。甚至在Outlook中。
          • full-page-intro-and-navigation - 帶有全寬背景圖像的介紹頁面,大膽的動畫菜單以及導航背后的類似iOS的模糊效果。
          • Fluid-Squares- 方形單元的流體網格。
          • Mobile-First-RWD - 移動優先響應式網頁設計的一個例子。
          • this-is-responsive - 這是響應。
          • npm run-scripts使用NPM運行腳本進行任務自動化。

          手勢

          • hammer.js - 用于多點觸控手勢的JavaScript庫。
          • touchemulator - 模擬桌面上的觸摸輸入。
          • Dragula - 拖放這么簡單就好疼。

          地圖

          • Leaflet - 適用于移動設備的交互式地圖的JavaScript庫。
          • Cesium - 開源WebGL虛擬地球儀和地圖引擎。
          • gmaps - 使用Google地圖的最簡單方法。
          • polymaps - 一個免費的JavaScript庫,用于在現代Web瀏覽器中制作動態交互式地圖。
          • kartograph.js - Kartograph SVG地圖的開源JavaScript渲染器。
          • mapbox.js - Mapbox JavaScript API,一個Leaflet插件。
          • jqvmap - jQuery矢量地圖庫。
          • OpenLayers3 - 一個高性能,功能豐富的庫,可滿足您的所有映射需求。

          視頻/音頻

          • prettyembed.js - Prettier嵌入你的YouTubes - 具有很好的選項,如高分辨率預覽圖像,嵌入選項的高級自定義,以及可選的FitVids支持。
          • html5media - 在所有主流瀏覽器中啟用和標記。
          • Play-em JS - Play'em是一個JavaScript組件,它管理音樂/視頻軌道隊列,并通過在HTML DIV(包括Youtube,Soundcloud和Vimeo)中嵌入多個玩家來播放一系列歌曲。
          • polyplayer - 使用一個API來規則YouTube,Soundcloud和Vimeo播放器。
          • flowplayer - 用于網絡的HTML5視頻播放器
          • mediaelement - HTML5或具有Flash和Silverlight填充程序的播放器,模仿HTML5 MediaElement API,在所有瀏覽器中實現一致的UI。 http://mediaelementjs.com/
          • SoundJS - 一個可以更輕松地在網絡上處理音頻的庫。它為在不同瀏覽器中播放音頻提供了一致的API。
          • video.js - Video.js - 開源HTML5和Flash視頻播放器。
          • FitVids.js - 一個輕量級,易于使用的jQuery插件,用于流體寬度視頻嵌入。
          • Ion.Sound - 任何網頁上的簡單聲音。
          • photobooth-js - 一個小部件,允許用戶在您的網站上拍攝他們的頭像。
          • clappr - 一個可擴展的網絡媒體播放器http://clappr.io

          活版印刷

          • FlowType.JS - 最好的Web排版:基于元素寬度的字體大小和行高。
          • BigText - jQuery插件,計算將一行文本與特定寬度匹配所需的字體大小和字間距。
          • circletype - 一個jQuery插件,可以讓你在網絡上輸入曲線。
          • slabText - 一個jQuery插件,用于生成大膽,響亮的標題。
          • simple-text-rotator - 在您的網站上添加一個超級簡單的旋轉文本,幾乎沒有標記。
          • novacancy.js - 文本Neon Golden效果jQuery插件。
          • jquery-responsive-text - 使文本大小響應!
          • FitText.js - 用于膨脹Web類型的jQuery插件。
          • Lettering.js - 一個輕量級,易于使用的JavaScript <span>注入器,用于激進的Web排版。

          動畫

          • velocity - 加速JavaScript動畫。
          • jquery.transit - jQuery的超級流暢的CSS3轉換和轉換。
          • impress.js - 在HTML文檔中使用CSS3轉換/轉換進行類似Prezi的演示。
          • bounce.js - 立即創建美味的CSS3動畫動畫。
          • GreenSock-JS - 適用于所有主流瀏覽器的高性能HTML5動畫。
          • TransitionEnd - TransitionEnd是一個不可知的跨瀏覽器庫,用于處理轉換事件。
          • Dynamic.js - 用于創建基于物理的CSS動畫的JavaScript庫。
          • the-cube - 多維數據集是CSS3過渡的實驗。
          • Effeckt.css - 一個高效的過渡和動畫庫
          • animate.css - CSS動畫的跨瀏覽器庫。因為易于使用易于使用。
          • textillate - CSS3文本動畫的簡單插件。
          • move.js - CSS3支持的JavaScript動畫框架。
          • animatable - 一個屬性,兩個值,無限可能。
          • shuffle-images - 以創造性的方式改變圖像的最簡單方法
          • smoothState.js - 使用jQuery進行不顯眼的頁面轉換。
          • Anime.js - 一個JavaScript動畫引擎
          • Mo.js - 用于網絡的運動圖形工具帶
          • particles.js - 用于創建粒子的輕量級JavaScript庫。

          圖像處理

          • lena.js - 具有過濾器和util函數的圖像處理庫。
          • Pica - 高質量圖像調整大小(使用快速Lanczos過濾器,在純JS中實現)。
          • cropper - 一個簡單的jQuery圖像裁剪插件。

          ES6

          • es6features - ECMAScript 6功能概述。
          • es6-features - ECMAScript 6:功能概述和比較。
          • es6-cheatsheet - ES2015 [ES6] cheatsheet包含提示,技巧,最佳實踐和代碼片段。
          • ECMAScript 6兼容性表 - 適用于各種環境的所有ECMAScript 6功能的兼容性表。
          • Babel(以前為6to5) - 將ES6 +代碼轉換為vanilla ES5,沒有運行時。
          • Traceur編譯器 - ES6功能> ES5。包括類,生成器,承諾,解構模式,默認參數等。

          產生器

          • Gatsby.js - 基于React的靜態站點生成器。

          SDK

          • javascript-sdk-design - 從工作和個人經驗中提取的JavaScript SDK設計指南
          • Spotify SDK - 面向實體的SDK,可與Spotify Web API配合使用。
          • Square Node.js SDK - 用于支付和其他Square API的JavaScript客戶端庫。

          雜項

          • echo - 具有data- *屬性的延遲加載圖像。
          • picturefill - 用于<picture>,srcset,sizes的響應式圖像polyfill。
          • platform.js - 幾乎適用于所有JavaScript平臺的平臺檢測庫。
          • json3 - 與幾乎所有JavaScript平臺兼容的現代JSON實現。
          • Logical Or Not - 關于JavaScript特性的游戲。
          • BitSet.js - JavaScript Bit-Vector實現
          • spoiler-alert - SPOILER ALERT!一個快樂的小jquery插件,以隱藏您的網站上的劇透。
          • jquery.vibrate.js - Vibration API Wrappers
          • list.js - 為表,列表和各種HTML元素添加搜索,排序,過濾器和靈活性。構建為不可見并處理現有HTML。 http://www.listjs.com
          • mixitup - MixItUp - 過濾和排序插件。
          • grid - 拖放庫,用于二維,可調整大小和響應式列表。
          • jquery-match-height - jQuery的響應性相等高度插件。
          • survey.js - JavaScript Survey Engine。它使用JSON進行調查元數據和結果。
          • Array Explorer和Object Explorer - 幫助確定在任何給定時間最適合使用本機JavaScript方法的資源
          • Clipboard.js - “復制到剪貼板”沒有Flash或使用框架。
          • ky - 基于瀏覽器Fetch API的簡潔優雅的HTTP客戶端。

          播客

          • JavaScript Air - 所有關于JavaScript和Web平臺的實時視頻廣播播客。
          • Web of Tomorrow - 為初學者播放有關JavaScript的播客。
          • JavaScript Jabber - 關于JavaScript的每周播客,包括Node.js,前端技術,職業,團隊等。

          值得一讀

          你不懂JS - 可能是用現代JavaScript編寫的最好的書,完全可以免費在線閱讀,或者可以買來支持作者。

          • braziljs / js-the-right-way - 一個易于閱讀的快速參考,用于JS最佳實踐,可接受的編碼標準以及Web上的鏈接。
          • JSbooks - 免費JavaScript電子書目錄。
          • Superhero.js - 有關創建,測試和維護大型JavaScript代碼庫的資源集合。
          • SJSJ - 簡化的JavaScript術語是一個社區驅動的嘗試,用一些簡單的詞語解釋當前JavaScript生態系統的流行語。
          • 如何編寫開源JavaScript庫 - 通過一系列步驟發布JavaScript開源庫的綜合指南。
          • Jaavascript教程 - 通過各種用戶排名的在線教程在線學習Javascript。

          原文:https://github.com/sorrycc/awesome-javascript

          本文:https://pub.intelligentx.net/collection-awesome-browser-side-javascript-libraries-resources-and-shiny-things

          討論:請加入知識星球或者小紅圈【首席架構師圈】


          主站蜘蛛池模板: 日本精品一区二区三本中文| 日本一区二区在线播放| 国产精品无码一区二区三级| 亚洲欧美日韩国产精品一区| 亚洲熟女少妇一区二区| 亚洲国产AV一区二区三区四区| 国产丝袜无码一区二区三区视频| 亚洲变态另类一区二区三区 | 亚洲av无码天堂一区二区三区| 国产精品分类视频分类一区| 中文字幕一区二区三区有限公司 | 日韩人妻无码一区二区三区| 黑巨人与欧美精品一区| 亚洲午夜一区二区三区| 国产爆乳无码一区二区麻豆| 国产在线精品一区二区三区不卡 | 四虎成人精品一区二区免费网站| 色偷偷av一区二区三区| 国产剧情国产精品一区| 中文字幕亚洲一区| 亚洲日韩激情无码一区| 日本一区二区三区高清| 国模少妇一区二区三区| 中文字幕精品亚洲无线码一区| 国产日韩AV免费无码一区二区三区| 国产成人精品无码一区二区老年人| 麻豆精品人妻一区二区三区蜜桃 | 中文字幕一区二区三区人妻少妇| 熟女精品视频一区二区三区| 国产高清视频一区三区| 国产高清视频一区三区| 99精品一区二区三区无码吞精| 亚洲午夜一区二区三区| 韩国一区二区三区视频| 蜜桃视频一区二区| 中文字幕一区二区三区永久| 看电影来5566一区.二区| 中文字幕一区二区三区精彩视频| 极品人妻少妇一区二区三区| 国内精自品线一区91| 一区免费在线观看|