LoginSignup
3
1

More than 3 years have passed since last update.

Noodlアプリに引数を渡す

Last updated at Posted at 2020-06-30

概要

Noodlアプリを起動するときに引数を渡す方法を紹介します。
引数を渡せるようになると、Noodlアプリに対して様々な初期値で起動することができ。
例えば、お天気アプリを作った時に所在地を初期値として渡す。アプリのメッセージを多言語化するなどができるようになります。

サンプルアプリ

簡単なサンプルとして、URLの引数を変更することで、アプリのメッセージとフォントサイズを変更するデモを作っていきます。
img0055_result.png

 ノード設定・接続

早速始めましょう。まずはNoodlを起動し、「CreateNewProject」でプロジェクトを起動します。
起動直後のノードにJavascriptノードと、ApplicationEventsノードを追加しています。

ノードの役割

  • Javascriptノード:URLから引数を取得するためのプログラムを記述します
  • ApplicationEventsノード:Noodlアプリが起動したことをJavascriptに通知します

img0056_result.png

Javascriptノードの設定

次にJavascriptノードに下記コードをコピペします。
コードではURLの取得。文字列の分離(?と&)。配列取得。を行っています。

Javascriptノード
define({
    // The input ports of the Javascript node, name of input and type
    inputs:{
        // ExampleInput:'number',
        // Available types are 'number', 'string', 'boolean', 'color' and 'signal',
        mySignal:'signal',
    },

    // The output ports of the Javascript node, name of output and type
    outputs:{
        // ExampleOutput:'string',
        text:'string',
        size:'number'
    },

    // All signal inputs need their own function with the corresponding name that
    // will be run when a signal is received on the input.
    mySignal:function(inputs,outputs) {
        var url   = location.href
        parameters    = url.split("?")
        params   = parameters[1].split("&")
        var paramsArray = []
        for ( it = 0; it < params.length; it++ ) {
            neet = params[it].split("=")
            paramsArray.push(neet[0])
            paramsArray[neet[0]] = neet[1]
        }
        outputs.text = paramsArray["text"]
        outputs.size = paramsArray["size"]
        // ...
    },

    // This function will be called when any of the inputs have changed
    change:function(inputs,outputs) {
        // ...
    }
})

ノードの接続

最後に各ノードを接続します。
- ApplicationEvents:start -> Javascript:mySignal
としてアプリ起動時にJavascriptのmySignalが実行されるようにしています
- Javascript:text/size -> Text:text/size
として、引数として受け取ったtext、sizeをTextノードに接続することで、メッセージを変更。文字サイズを変更しています

img0051_result.png

確認

これで完成です。実際にURLを叩いて、Noodlの簡易Webサーバから動作を確かめてみましょう。
ブラウザを立ち上げて、下記URLを入力します。

URLでの引数渡し

http://Noodlアドレス?引数1=値1&引数2=値2

確認用のURL


//引数を渡さないで起動する場合
http://localhost:8574/external/viewer/index.html

//引数を渡して起動する場合
http://localhost:8574/external/viewer/index.html?text=GoodBye&size=100

まとめ

サーバ上に置いたNoodlアプリは誰から開いてもおなじ初期値を持っていますが、
URL上から引数を渡すことで、任意の初期値を設定することに成功しました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1