<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                作為模塊和包服務的工具,NPM十分便捷。它實質上已經是一個包共享平臺,所有人都可以貢獻模塊并將其打包分享到這個平臺上,也可以在許可證(大多是MIT許可證)的允許下免費使用它們。NPM提供的這些便捷,將模塊鏈接到一個共享平臺上,縮短了貢獻者與使用者之間的距離,這十分有利于模塊的傳播,進而十分利于Node的推廣。幾乎沒有一種語言或平臺有Node這樣才出現3年就擁有成千上萬第三方模塊的情景。這個功勞一部分是因為Node選擇了JavaScript,這門語言擁有極大的開發人員基數,具有強大的生產力;另一部分是因為CommonJS規范和NPM,它們使得產品能夠更好的組織、傳播和使用。 潛在的問題在于,在NPM平臺上,每個人都可以分享包到平臺上,鑒于開發人員水平不一,上面包的質量也良莠不齊。另一個問題是,Node代碼可以運行在服務器端,需要考慮安全問題。 對于包的使用者而言,包質量和安全問題需要作為是否采納模塊的一個判斷條件。 盡管NPM沒有硬性的方式去評判一個包的質量和安全,好在開源社區也有它內在的健康發展機制,那就是口碑效應,其中NPM模塊首頁([https://npmjs.org](https://npmjs.org))上的依賴榜可以說明模塊的質量和可靠性。第二個可以考察質量的地方是GitHub,NPM中大多數包都是通過GitHub托管的,模塊項目的觀察者數量和分支數量也能從側面反映這個模塊的可靠性和流行度。第三個可以考量包質量的地方在于包中的測試用例和文檔的狀況,一個沒有單元測試的包基本上是無法被信任的,沒有文檔的包,使用者使用時內心也是不踏實的。 在安全問題上,在經過模塊質量的考察之后,應該可以去掉一大半候選包。基于使用者大多是JavaScript程序員,難點其實在于第三方C/C++擴展模塊,這類模塊建議在企業的安全部門檢查之后方可允許使用。 事實上,為了解決上述問題,Isaac Z. Schlueter 計劃引入CPAN社區中的Kwalitee風格來讓模塊進行自然排序。Kwalitee是一個擬聲詞,發音與quality相同。CPAN社區對它的原始定義如下: "Kwalitee" is something that looks like quality,sounds like quality,but not quite quality. 大致意思就是確認一個模塊的質量是否優秀并不是那么容易,只能從一些表象來進行考察,但即使考察都通過,也并不能確定它就是高質量的模塊。這個方法能夠排除大部分不合格的模塊,雖然不夠精確但是有效。總體而言,符合Kwalitee的模塊要滿足的條件與上述提及的考察點大致相同: * 具備良好的測試 * 具備良好的文檔(README、API) * 具備良好的測試覆蓋率 * 具備良好的編碼規范 * 更多條件 CPAN社區制定了相當多的規范來考察模塊。未來,NPM社區也會有更多的規范來考察模塊。讀者可以根據這些條款區分出那些優秀模塊跟糟粕模塊。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看