3

Sails.js アプリケーションで、javascript アセットを選択的に含めるにはどうすればよいですか?

たとえば、管理ページがあり、admin.js が assets/js ディレクトリ内にあるとします。admin.js がパブリック インデックス ページに読み込まれないようにするにはどうすればよいですか?

js を public ディレクトリに移動し、管理ビューのテンプレートにスクリプトを含めることができることを認識しています。しかし、assets.js()呼び出しが JavaScript を挿入した後も、それを含めることができません。Sails.io.jsスクリプトがロードされた後に挿入する必要があります。

スクリプトを選択的にロードし、 assets.js()関数呼び出しに自動的に含まれるSails.io.jsにアクセスする方法はありますか? この種の状況のた​​めのより良いパラダイムはありますか?

編集:

SailsJS 0.9 のリリースとアセット管理システムの再構築以来、この質問はもはや当てはまりません。

4

6 に答える 6

1

Sailsjs は、asset-rack を使用して /assets を提供します。デフォルトのレイアウト ページでは、sailsjs は次のようなページを提供します (dummy2.js は明示的な < script > に含まれています)。

<html>
  <head>
    ...
    <script type="text/javascript" src="/assets/mixins/sails.io-d338eee765373b5d77fdd78f29d47900.js"></script>
    <script type="text/javascript" src="/assets/js/dummy0-1cdb8d87a92a2d5a02b910c6227b3ca4.js"></script>
    <script type="text/javascript" src="/assets/js/dummy1-8c1b254452f6908d682b9b149eb55d7e.js"></script>
  </head>
  <body>
    ...
    <script src="/public/dummy2.js"></script>
    ...
  </body>
</html>

そのため、sailsjs はファイルを連結しません (少なくとも開発モードでは)。Sails.io (socket-io) は常に、レイアウトでは /assets/js の前、ページでは < script > の前に含まれます。

あなたの admin.js は、sails.io がまだ設定していない状態を予期しているようです。おそらく、サーバーとのトランスポートのネゴシエーションですか? 条件が整うまで待ってみてください。

于 2013-07-11T22:06:04.863 に答える
1

私はこれが古い質問であることを知っていますが、人々はまだこれを探しているので.

新しいプロジェクトを作成すると、Sails のルートに tasks というフォルダーが作成されます。

お探しのファイルは

パイプライン.js

そのファイルには、と呼ばれる変数が保持されていますjsFilesToInject

// Client-side javascript files to inject in order
// (uses Grunt-style wildcard/glob/splat expressions)
var jsFilesToInject = [

  // Load sails.io before everything else
  // 'js/dependencies/sails.io.js',
  'js/sails.io.js'


  // Dependencies like jQuery, or Angular are brought in here
  'js/dependencies/**/*.js',

  // All of the rest of your client-side js files
  // will be injected here in no particular order.
  'js/**/*.js'
];

ロードしたいスクリプトを Sails.io.js の前に置くだけです。

これは帆 0.11.x に関連します。

有効な別の方法は、views/partials フォルダーを作成することです

mapScripts.ejs のような新しいファイルを作成し、そこにスクリプトタグをドロップして、ビューで使用します

<% include ../partials/mapScripts %>
于 2015-12-20T14:00:27.223 に答える
0

含まれているファイルの場所に関する質問の一部に答えるには。

0.10 バージョンでは、ファイルの順序は file に設定されていました。tasks/values/injectedFiles.js以前のバージョンではそれ自体が決定されていたことを思い出しGruntfile.jsます。

于 2014-02-28T18:32:42.403 に答える
0

はい、テンプレートに条件を入れます。:)

または、js に別の「ブロック」を追加します。

extends ../layout

block body
    <h1>hello</h1>

block jsscripts
    <scripts> ..... </script>
于 2013-07-10T07:33:54.027 に答える