<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                當你創建更復雜的app時,你可能會遇到不是在 NativeScript 模塊里實現的功能。不要擔心,因為 NativeScript 允許你使用npm(node包管理)來導入npm模塊到你的app。或者,如果需要的話,你可以安裝 NativeScript 插件,它們是簡單的npm模塊,可以用來訪問本地代碼并使用安卓和ios SDK。 在本章,你將安裝和使用一個外部的email驗證器模塊,當郵件地址在注冊頁面輸入的時候驗證地址格式。然后,你會添加一個 NativeScript 插件, [NativeScript 社交分享](https://www.npmjs.com/package/nativescript-social-share) ,以允許用戶用他們設備本地的共享程序來分享他們的雜貨列表。 ## **[Table of contents](http://docs.nativescript.org/tutorial/chapter-5#table-of-contents)**目錄 * 5.1: 使用npm模塊 * [5.2: 使用NativeScript 插件](#5-2) ## **[5.1: Using npm modules](http://docs.nativescript.org/tutorial/chapter-5#51-using-npm-modules)**使用npm模塊 {#5-1} 能夠確保人們在注冊頁面輸入準確格式的email地址到你的app里是非常好的。你可以自己寫這個功能,但驗證郵件地址是令人驚訝地棘手( [surprisingly tricky](http://stackoverflow.com/questions/46155/validate-email-address-in-javascript) ),所以使用一個已經提供驗證的npm模塊是更簡單的。對于雜貨鋪,我們來看看如何添加這個 [郵件驗證模塊](https://www.npmjs.com/package/email-validator) 來測試地址是否有效。 > ### 操作:安裝email驗證模塊 > > --- > > 回到你的命令行,確定你在雜貨鋪項目的文件夾根目錄工作,也就是這樣: > > `sample-Groceries <----------------` > > `├── app` > > `│ └── ...` > > `├── package.json` > > `└── platforms` > > `├── android` > > `└── ios` > > 在此根目錄安裝email驗證模塊: > > `npm install email-validator --save` 安裝進程在后臺搞了一些飛機。首先,因為你添加了 `--save` 標志,npm記錄這個依賴到你app的 `package.json` 。如果打開 `package.json` ,你會看到 `"email-validator"` 在你app的 `"dependencies"` 數組.。 `"dependencies": {` `"email-validator": "^1.0.4"` `}` npm CLI同樣在你app根目錄里創建了一個 `node_modules` 文件夾。此文件夾包含email驗證模塊的代碼,就是在 `node_modules/email_validator/index.js` 里的一些驗證邏輯。 > ### 提示: > > 通過在 `package.json` 文件保存你app的npm依賴,你總是可以運行 `npm install` 來再生你的 `node_modules` 文件夾。也是因為這點,通常的操作是在源碼管理里排除 `node_modules` 文件夾。雜貨鋪app使用git作源碼管理,也因此在它的 `.gitignore` 里包括了 `ode_modules/` 既然你安裝了模塊,我們就來看如何使用它。 #### > ### 操作:使用email驗證模塊 > > --- > > 打開 `/app/shared/view-models/user-view-model.js` 將下面這行代碼添加到文件頂部: > > `var validator = require("email-validator");` > > ### **注意:** > > --- > > NativeScript 框架的 `require()` 方法被設置為查看npm模塊的 `package.json` 文件的 `"main"` 值。在當前模塊里, `"main"` 值是 `"index.js"` 。因此,當你運行 `require("email-validator")` ,你實際上在請求位于 `node_modules/email_validator/index.js` 的文件。你也可以輸入 `require("email-validator/index")` 檢索到相同的文件。 > > 要利用驗證器,添加一個函數到 `user-view-model.js` ,正好在 `return viewModel` 行的上面: > > `viewModel.isValidEmail = function() {` > > `var email = this.get("email");` > > `return validator.validate(email);` > > `};` > > Then, edit the registration function in `app/views/register/register.js` to trap any malformed email addresses: > > 然后,在 `app/views/register/register.js` 編輯注冊函數來分離任何畸形的email地址: > > `exports.register = function() {` > > `if (user.isValidEmail()) {` > > `completeRegistration();` > > `} else {` > > `dialogsModule.alert({` > > `message: "Enter a valid email address.",` > > `okButtonText: "OK"` > > `});` > > `}` > > `};` 在這個函數里,用戶提交一個email和密碼,值被發送到視圖模型去驗證。如果通過,注冊可以畸形,否則你顯示一個警告。然而為了徹底檢驗這個改變(指的是添加驗證器這回事),你需要做另外一件事情。 > ### 操作:重建app > > 我們在第一章提過,雖然 `tns livesync` 命令足夠聰明地重載app來應付你對app的大多數更改,某些更改需要全部重建——主要是,在 `app/App_Resources` 里對本地文件的改變,通過 `npm install` 安裝了新的模塊,和新的 NativeScript 插件。 > > For NativeScript to recognize this new email-validator npm module, type `Ctrl+C` in your terminal to kill the existing `tns livesync` watcher if it’s still running, and then use `tns run` to rebuild your application and deploy it to an emulator or device. > > 要讓 NativeScript 認識這個新的email驗證器 npm 模塊,在你的命令行按 `Ctrl+C` 終止現有的 `tns livesync` 監視,如果它在繼續運行的話,然后使用 `tns run` 來重建你的應用并部署到虛擬機或者設備上。 > > `tns run ios --emulator` > > 或 > > `tns run android --emulator` > > app部署之后你可以再次運行 `livesync` 命令來重啟監視。 > > `tns livesync ios --emulator --watch` > > 或 > > `tns livesync android --emulator --watch` app再次運行之后,如果你視圖哦那個一個無效的email地址注冊,你會看到阻止提交的警告: ![](https://box.kancloud.cn/d948ae2517dcf4c42f449ae97ee2b72b_201x301.png)![](https://box.kancloud.cn/d68c8ea44bf45bd8c5eb09a44ade2763_191x301.png) 通常,npm模塊大大擴展你在 NativeScript app里能做的事情的數量。需要如期時間格式化?使用 [moment](https://www.npmjs.com/package/moment) 。需要多用途函數處理對象和數組?使用 [lodash](https://www.npmjs.com/package/lodash) 或 [underscore](https://www.npmjs.com/package/underscore) 。當你把 NativeScript 插件引入到這個場景時,這個代碼重用的效力會變得更加強大。 > ### 警告: > > **不是所有npm模塊在 NativeScript app里都能工作,依賴于 Node.js 或 browser APIs 的沒用,因為 NativeScript 里沒有這些 APIs 。 NativeScript wiki 涵蓋了一個\*\***[被驗證過能在NativeScript apps里運行的一些相當流行的npm模塊的清單](https://github.com/NativeScript/NativeScript/wiki/supported-npm-modules)**\*\* 。** ## [**5.2: Using NativeScript plugins**](http://docs.nativescript.org/tutorial/chapter-5#52-using-nativescript-plugins)**\*\***\*\*_\*使用\_\* NativeScript 插件 {#5-2} NativeScript插件是添加了運行原生代碼和使用ios\/android框架的功能的npm模塊。因為 NativeScript 插件也是npm模塊,你在此前部分學習的那么多技巧仍然有效。最大的不同之處是在命令行里用來安裝插件的方法。我們通過安裝 NativeScript 社交分享插件來看看它是如何工作的。 > ### 操作: ** 安裝社交分享插件** > > --- > > 回到命令行,確定你仍然在app的根目錄,運行下面的命令: > > `tns plugin add nativescript-social-share` 安裝進程做了與 `npm install` 命令相同的事情——包括從npm檢索模塊,安裝模塊到 `node_modules` 里面,并且把模塊作為一個依賴保存到 `ckage.json` ——但是 `tns plugin add` 命令而外地設置了插件需要使用的所有原生代碼。 例如 [NativeScript push插件](https://github.com/NativeScript/push-plugin) 使用了ios和android SDK,那么 `tns plugin add` 命令就妥善安裝了它們。 [NativeScript flashlight插件](https://github.com/tjvantoll/nativescript-flashlight) 需要授權使在安卓上用攝像頭,那么 `tns plugin add` 命令就同樣地負責設置好。 既然你安裝了社交分享插件,我們就來看如何使用它。 > ### 操作:使用社交分享插件 > > --- > > 打開`app/views/list/list.js` 在文件頂部添加下面這行,它會引入你剛才安裝的社交分享模塊: > > `var socialShare = require("nativescript-social-share");` > > 然后你需要創建一些UI元素來允許你分享雜貨列表。為此,打開 `app/views/list/list.xml` ,緊跟開標簽 `<Page>` 后且在開標前 `<GridLayout>` 前添加下面的代碼: > > `<Page.actionBar>` > > `<ActionBar title="Groceries">` > > `<ActionBar.actionItems>` > > `<ActionItem text="Share" tap="share" ios.position="right" />` > > `</ActionBar.actionItems>` > > `</ActionBar>` > > `</Page.actionBar>` > > 這段代碼定義了一個 [ActionBar](http://docs.nativescript.org/ui/action-bar) ,它是一個UI組件可以包含不同的目錄項目,并包裹在 `<ActionBar.actionItems>標簽里。` ActionBar 的 `title` 允許你顯示頁面具體的標題。 > > ### 注意: > > ios設備上, `<ActionItem>` 是有序地從左到右地放置;你可以通過提供一個 `ios.position` 屬性來覆蓋它們(就像上面的代碼那樣) > > 模塊安裝并引入之后,且UI就位,你可以在列表頁面的后臺代碼文件里實現 `<ActionItem>` 的tap處理器( `share()` )了。 > > 為此,回到 `list.js` 文件,粘貼下面的代碼到文件底部: > > `exports.share = function() {` > > `var list = [];` > > `var finalList = "";` > > `for (var i = 0, size = groceryList.length; i < size ; i++) {` > > `list.push(groceryList.getItem(i).name);` > > `}` > > `var listString = list.join(", ").trim();` > > `socialShare.shareText(listString);` > > `};` 這段代碼從雜貨列表的視圖模型抓取雜貨,把數據轉換為逗號分隔的字符串,并把字符串傳遞給社交分享模塊的 `shareText()` 方法。 > ### 警告: > > --- > > 在這節安裝了一個 NativeScript 插件,你必須最后一次重建app來測試改變。如果你不記得如何做,[回到本章開始](#5-1)去查看。 現在如果你運行app,你會看到在屏幕頂端有一個新的按鈕。當你點擊它,會出現原生的 iOS 或 Android 分享掛件,讓你發送你的雜貨到社交網絡,或者通過email,短信,或者任何你喜歡的方式發送它們。 酷斃了吧,哈?使用npm模塊的能力極大地擴展了你在一個 NativeScript app里能做的事情。需要在你的app里構建郵件?試試 [NativeScript email plugin](https://www.npmjs.com/package/nativescript-email) 。需要在你的app里使用剪貼板?試試 [NativeScript clipboard plugin](https://www.npmjs.com/package/nativescript-clipboard) 。 如果你在尋找 NativeScript 插件,可以從搜索 [Telerik NativeScript 插件市場](http://plugins.telerik.com/nativescript)和我們的[community-curated list of plugins on npm](http://plugins.nativescript.rocks/) 開始。如果沒找到你要的插件,你可以 [在我們的點子入口請求插件](https://nativescript.ideas.aha.io/) ,或者你可以嘗試 [自己創造這個插件](https://docs.nativescript.org/plugins) 。 Between NativeScript modules, npm modules, and NativeScript plugins, the NativeScript framework provides a lot of functionality you can use to build your next app. However, we've yet to talk about NativeScript's most powerful feature: the ability to directly access iOS and Android APIs in JavaScript. Let's look at how it works. 在 NativeScript 模塊,npm模塊,和 NativeScript 插件之間, NativeScript 框架提供了大量功能讓你可以用來創建你的下一個app。然而,我們尚未談到 NativeScript最強大的內容:在 JavaScript 里面直接訪問 iOS 和 Android 的API。我們來看看它是如何工作的 。
                  <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>

                              哎呀哎呀视频在线观看