- Meteor 教程
- Meteor - 首頁
- Meteor - 概述
- Meteor - 環境設定
- Meteor - 第一個應用程式
- Meteor - 模板
- Meteor - 集合
- Meteor - 表單
- Meteor - 事件
- Meteor - Session
- Meteor - Tracker
- Meteor - 包
- Meteor - 核心 API
- Meteor - Check
- Meteor - Blaze
- Meteor - 定時器
- Meteor - EJSON
- Meteor - HTTP
- Meteor - 郵件
- Meteor - 資源
- Meteor - 安全性
- Meteor - 排序
- Meteor - 賬戶
- Meteor - 方法
- Meteor - Package.js
- Meteor - 釋出與訂閱
- Meteor - 結構
- Meteor - 部署
- Meteor - 在移動裝置上執行
- Meteor - 待辦事項應用程式
- Meteor - 最佳實踐
- Meteor 有用資源
- Meteor - 快速指南
- Meteor - 有用資源
- Meteor - 討論
Meteor - Package.js
在本章中,我們將學習如何建立自己的 meteor 包。
建立包
讓我們在桌面上新增一個新資料夾,將在其中建立包。我們將使用命令提示符視窗。
C:\Users\username\Desktop\meteorApp> mkdir packages
現在,我們可以在上面建立的資料夾中建立包。從命令提示符執行以下命令。使用者名稱是 Meteor 開發人員使用者名稱,包名稱是包的名稱。
C:\Users\username\Desktop\meteorApp\packages>meteor create --package username:package-name
新增包
為了能夠將本地包新增到我們的應用程式,我們需要設定環境變數,它將告訴 Meteor 從本地資料夾載入包。右鍵單擊計算機圖示並選擇屬性/高階系統設定/環境變數/新建。
變數名應為PACKAGE_DIRS。變數值應為我們建立的資料夾的路徑。在我們的例子中,C:\Users\username\Desktop\meteorApp\packages。
新增新的環境變數後,不要忘記重新啟動命令提示符。
我們現在可以透過執行以下程式碼將包新增到我們的應用程式中 -
C:\Users\username\Desktop\meteorApp>meteor add username:package-name
包檔案
在我們建立的包中將找到以下四個檔案。
- package-name-test.js
- package-name.js
- package.js
- README.md
測試包 (package-name-test.js)
Meteor 提供了tinytest包用於測試。讓我們首先使用命令提示符視窗中的以下命令安裝它。
C:\Users\username\Desktop\meteorApp>meteor add tinytest
如果我們開啟package-name-test.js,我們將看到預設的測試示例。我們將使用此示例來測試應用程式。注意:在開發 meteor 包時,最好編寫我們自己的測試。
要測試包,讓我們在命令提示符中執行此程式碼。
C:\Users\username\Desktop>meteor test-packages packages/package-name
我們將得到以下結果。
package.js 檔案
這是我們可以編寫程式碼的檔案。讓我們為我們的包建立一些簡單的功能。我們的包將在控制檯中記錄一些文字。
packages/package.js
myPackageFunction = function() {
console.log('This is simple package...');
}
package-name.js 檔案
這是我們可以設定一些包配置的檔案。我們稍後會回到它,但現在我們需要匯出myPackageFunction以便我們可以在我們的應用程式中使用它。我們需要在Package.onUse函式內新增它。該檔案將如下所示。
packages/package-name.js
Package.describe({
name: 'username:package-name',
version: '0.0.1',
// Brief, one-line summary of the package.
summary: '',
// URL to the Git repository containing the source code for this package.
git: '',
// By default, Meteor will default to using README.md for documentation.
// To avoid submitting documentation, set this field to null.
documentation: 'README.md'
});
Package.onUse(function(api) {
api.versionsFrom('1.2.1');
api.use('ecmascript');
api.addFiles('mypackage.js');
api.export('myPackageFunction'); // We are exporting the function we created above...
});
Package.onTest(function(api) {
api.use('ecmascript');
api.use('tinytest');
api.use('username:package-name');
api.addFiles('package-name-tests.js');
});
使用包
現在我們終於可以從我們的meteorApp.js檔案中呼叫myPackageFunction()了。
packages/package.js
if(Meteor.isClient) {
myPackageFunction();
}
控制檯將記錄我們包中的文字。
為了更好地理解如何配置package.js檔案,我們將使用 Meteor 官方文件中的示例。
這是一個示例檔案...
/* Information about this package */
Package.describe({
// Short two-sentence summary.
summary: "What this does",
// Version number.
version: "1.0.0",
// Optional. Default is package directory name.
name: "username:package-name",
// Optional github URL to your source repository.
git: "https://github.com/something/something.git",
});
/* This defines your actual package */
Package.onUse(function (api) {
// If no version is specified for an 'api.use' dependency, use the
// one defined in Meteor 0.9.0.
api.versionsFrom('0.9.0');
// Use Underscore package, but only on the server.
// Version not specified, so it will be as of Meteor 0.9.0.
api.use('underscore', 'server');
// Use iron:router package, version 1.0.0 or newer.
api.use('iron:router@1.0.0');
// Give users of this package access to the Templating package.
api.imply('templating')
// Export the object 'Email' to packages or apps that use this package.
api.export('Email', 'server');
// Specify the source code for the package.
api.addFiles('email.js', 'server');
});
/* This defines the tests for the package */
Package.onTest(function (api) {
// Sets up a dependency on this package
api.use('username:package-name');
// Allows you to use the 'tinytest' framework
api.use('tinytest@1.0.0');
// Specify the source code for the package tests
api.addFiles('email_tests.js', 'server');
});
/* This lets you use npm packages in your package*/
Npm.depends({
simplesmtp: "0.3.10",
"stream-buffers": "0.2.5"
});