小プログラムの全スタック開発新時代


李成煕、騰訊雲高級技師.2014年度卒業は騰訊AlloyTeamに参加し、QQ群、模様中継、騰訊文書などのプロジェクトを担当したことがあります.2018年にテンセントなどの開発チームに参加します.性能の最適化、工程化及び小プログラムサービスに専念する.微博𞓜は𞓜Githubを知っている.
原文のリンク
マイナープログラムとは何ですか?
マイナープログラム・クラウド開発はWeChatチームとテンセントクラウドチームが共同で開発した一連の小さいプログラムの基礎能力であり、簡単に言えば、雲能力は小さいプログラムの基礎能力になります.セット機能は、騰訊雲が新たに打ち出した雲開発(Tencent Coud Base)に基づいて開発された一連の完備した小プログラムバックグラウンド開発方案です.
小さいプログラム・クラウドは開発者に完全なクラウドプロセスを提供し、バックエンドの開発と維持概念を簡略化し、サーバを構築する必要がなく、プラットフォームから提供されるAPIを使ってコア業務の開発を行うことで、高速なオンラインと反復を実現できる.
この解決策は現在3つの基礎能力サポートを提供しています.
  • 記憶:ウィジェットの先端に直接クラウドファイルをアップロード/ダウンロードし、ウィジェットクラウドの可視化管理
  • データベース:1つは、ウィジェットの先端でも動作可能であり、クラウド関数でも読み書き可能な文書型データベース
  • である.
  • クラウド関数:クラウドで実行されるコード、WeChatプライベートプロトコルの天然認証、開発者は業務論理コード
  • を作成するだけです.
    今後は、より多くのサービス能力を集積し、より強力なクラウドサポートを提供します.
    どのように小さいプログラム・雲を使って開発しますか?
    上は小さいプログラム・雲の開発の簡単な使用図譜です.小さいプログラムの端で、直接に公式の提供するインターフェースを使って、雲の関数の端で、直接に公式の提供するNode SDKを使って、あなたの雲の資源を操作することができます.以前は小さいプログラムを開発するのに心配していたデータベースの構築、ファイルシステムの配置などはありませんでした.
    プログラム開発IDEの中にある が必要です.開通して、環境IDを記入すれば、プログラムの雲能力があります.
    もちろん、実用的なクラウドの開発は、既存のバックグラウンドアーキテクチャを排除していません.下のアーキテクチャを通じて、既存のバックグラウンドサービスとシームレスに対応できます.
    それから、私はそれぞれ小さい時から手続きをして、サービスでこれらの雲資源をどう使うかを説明します.
    雲の能力を使う
    アプレット端
    クライアントとは、ここでは小さなプログラムの端にあることを意味します.雲開発能力を使うなら、以下の配置をしてください.
  • は、app.json / game.jsonにおいてフィールド"cloud": true
  • を追加する.
  • project.co fig.jsonには、クラウド関数を格納するディレクトリ
  • を指定するためのフィールドcloudfunctionRootが追加されている.
  • 雲開発能力を初期化する:
  • //app.js
    App({
      onLaunch: function () {
        wx.cloud.init({
            traceUser: true //                     
        });
      }
    });
    アプレット端初期化能力文書
    ユーザ管理において、クラウド能力を使用したウィジェットのアクセスユーザリストが表示され、デフォルトではアクセス時間の順序で並べられています.アクセス時間のトリガは、ウィジェット端でwx.cloud.initメソッドを呼び出し、traceUserパラメータの値はtrueです.
    職務に服する
    クラウド関数でファイル、データベース、クラウド関数リソースを操作したいなら、私たちが提供したサービス端末SDKを使って操作してもいいです.まず、あなたのあるクラウド関数に入って、以下の依存パッケージをインストールします.
    npm i --save tcb-admin-node
    クラウド関数で初期化
    //      
    const app = require('tcb-admin-node');
    
    //      
    //        secretId secretKey。
    // env            
    app.init({
      secretId: 'xxxxx',
      secretKey: 'xxxx', 
      env: 'xxx'
    });
    
    //          
    app.init()
    
    //        
    app.init({
      env: 'xxx'
    });
    サービス初期化ドキュメント
    保存
    クラウド開発は、ストレージスペース、アップロードファイル、ダウンロードファイル、CDNによるファイルアクセスの加速などの能力を提供しています.
    アプレット端
    //     
    wx.chooseImage({
        success: dRes => {
            //     
            const uploadTask = wx.cloud.uploadFile({
                cloudPath: `${Date.now()}-${Math.floor(Math.random(0, 1) * 10000000)}.png`, //      
                filePath: dRes.tempFilePaths[0], //        
                success: console.log,
                fail: console.error
            });
        },
        fail: console.error,
    });
    ウィジェットの保存ドキュメント
    職務に服する
    const app = require('tcb-admin-node');
    app.init();
    
    app.uploadFile({
        cloudPath: "cover.png",
        fileContent: fs.createReadStream(`${__dirname}/cover.png`)
    }).then((res) => {
        console.log(res);
    }).catch((err) => {
        console.error(err);
    });;
    コンソール
    アップロードされたファイルはコンソールに表示されます.コンソールで写真の詳細を削除したりダウンロードしたりします.
    文書全体の権限をコントロールすることもできます.ここでは具体的な紹介があります.
    文書をサービスで保存します.
    データベース
    プログラムクラウドは文書型データベースを提供しています.データベースには複数のセット(関係型データのテーブルに相当)が含まれています.セットはJSON配列に近いです.配列の各オブジェクトは一つの記録で、記録の形式はJSON文書です.
    各記録には一つのAPIフィールドがあり、この記録を一意にマークするために、一つの_idフィールドが記録の作成者、すなわちウィジェットのユーザである.開発者は、_openidをカスタマイズすることができますが、小さなプログラムで_idをカスタマイズすることはできません._openidは、文書作成時にシステムがウィジェットユーザによってデフォルトで作成したものであり、開発者は、ドキュメントを識別して配置するために使用することができる.
    データベース_openidは、ウィジェットとサービス端末の2つの部分に分けられており、ウィジェットAPIは、厳格な起動権限制御を有しており、開発者は、ウィジェット内で直接にAPIを呼び出して、非敏感データの操作を行うことができる.より高いセキュリティ要件があるデータについては、クラウド関数内でサービス端末APIを介して動作することができる.クラウド関数の環境はクライアントと完全に分離されており、クラウド関数上で秘密で安全な操作データベースがあります.
    データベースAPIは、削除を削除して調べる能力を含み、APIを使用してデータベースを操作するには、3ステップだけ必要である.データベース参照の取得、クエリーの作成/更新条件の作成、要求の発行.データベースを操作する前に、まずコンソールにAPIを作成してください.
    アプレット端
    const db = wx.cloud.database();
    
    //     
    db.collection('photo').add({
        data: {
            photo: 'cloud://tcb-xxx/05ca1d38f86f90d66d4751a730379dfa6584dde05ab4-Ma9vMN_fw658.jpg',
            title: '  '
        }
    });
    
    //     
    db.collection('photo').get().then((res) => {
        let data = res.data;
        console.log(data);
    });
    
    //   
    //      , _openid           
    {
        photo: 'cloud://tcb-xxx/05ca1d38f86f90d66d4751a730379dfa6584dde05ab4-Ma9vMN_fw658.jpg',
        title: '  ',
        _openid: 'oLlMr5FICCQJV-QgVLVzKu2312121'
    }
    アプレット端データベースドキュメント
    職務に服する
    const app = require('tcb-admin-node');
    app.init();
    const db = app.database();
    
    db.collection('photo').limit(10).get().then((res) => {
        console.log(res);
    }).catch((err) => {
        console.error(err);
    });
    
    //   
    //        ,            
    {
        photo: 'cloud://tcb-xxx/05ca1d38f86f90d66d4751a730379dfa6584dde05ab4-Ma9vMN_fw658.jpg',
        title: '  ',
        _openid: 'oLlMr5FICCQJV-QgVLVzKu4312121'
    }
    {
        photo: 'cloud://tcb-xxx/0dc3e66fd6b53641e328e091ccb3b9c4e53874232e6bf-ZxSfee_fw658.jpg',
        title: '  ',
        _openid: 'DFDFEX343xxdf-QgVLVzKu3312121'
    }
    {
        photo: 'cloud://tcb-xxx/104b27e339bdc93c0da15a47aa546b6e9c0e3359c315-L8Px2Y_fw658.jpg',
        title: '  ',
        _openid: 'DFDFEX343xxdf-QgVLVzKu3412121'
    }
    データベースドキュメント
    コンソール
    コンソールでユーザー操作のデータを見ることができます.自分でコンソールにデータを追加したり、更新したり、削除したりすることもできます.
    データ量が大きい場合は、クエリーを提供するインデックスの効率を設定できます.
    データベースは、権限を設定することによって、各collectionを制御することもできる.
    雲の関数
    クラウド関数はクラウドのコードを実行しています.サーバーを管理する必要がなく、開発ツール内でワンタッチで展開をアップロードすれば、バックエンドコードを実行できます.
    開発者は、クラウド関数内で呼び出しごとのコンテキスト(collectionappidなど)を取得することができ、複雑な認証機構を維持することなく、天然信頼できるユーザ登録状態を取得することができる(openid).
    アプレット端
    wx.cloud.callFunction({
        name: 'addblog', //      
        data: { //           
            title: '    TCB',
            content: '  、    、   '
        }
    }).then(res => {
        console.log(res)
    }).catch((err) => {
        console.error(err);
    });
    ウィジェット端雲関数ドキュメント
    職務に服する
    const app = require("tcb-admin-node");
    app.init();
    
    app.callFunction({
        name: 'addblog', //      
        data: { //           
            title: '    TCB',
            content: '  、    、   '
        }
    }).then((res) => {
        console.log(res);
    }).catch((err) => {
        console.error(err);
    });
    
    翻訳機能付き文書
    コンソール
    アップロード後のクラウド関数は、ここに羅列されます.
    クラウド関数を呼び出すたびに、ここでログを見ることができます.また、テストのパラメータを作成して、デバッグすることもできます.
    文法飴
    大部分のインターフェースは現在、PromiseとAync/Awaitの2つの書き方をサポートしています.この節はopenidを例にして、callFunctionにこの2つの書き方を紹介します. tは、本質的にはAsync/Awaiに基づくシンタックス飴であり、Promiseを同期された書き方に変換するだけである.
    Promise
    const app = require("tcb-admin-node");
    app.init();
    
    exports.main = (event, context, callback) => {
        app.callFunction({
            name: 'addblog', //      
            data: { //           
                title: '    TCB',
                content: '  、    、   '
            }
        }).then((res) => {
            console.log(res);
            callback(null, res.data);
        }).catch((err) => {
            callback(err);
        });
    };
    Async/Await
    const app = require("tcb-admin-node");
    app.init();
    
    exports.main = async (event, context) => {
        let result = null;
    
        try {
            result = await app.callFunction({
                name: 'addblog', //      
                data: { //           
                    title: '    TCB',
                    content: '  、    、   '
                }
            });
        }
        catch (e) {
            return e;
        }
    
        return result;
    };
    クラウド関数で使用するには、Promise以上の環境なので、天然サポートNode 8.9詰法が必要ですが、小プログラムで使用するには、Async/Awaitを追加的に導入する必要があります.
    開発者リソース
    マイナープログラム・クラウド開発はテンセントクラウドのクラウド開発機能に基づいているので、テンセントクラウドとウィジェットの両方に多くの開発者資源があります.ここで参考にしてください.
  • テンセントクラウド開発者リソース及び文書
  • テンセントなどの開発プラットフォームの公式Github
  • マイクロクレジットプログラム・クラウド文書