代替

2017-03-27 12 views
1

私はのように私のパブリックフォルダを公開するノードのプロジェクトをやってる:代替

app.use(express.static(path.join(__dirname, '/public'))) 

だから今、私のすべてのパブリックファイルがlocalhost:8080/*

を介してアクセスしている私は「views」という名前のフォルダを作成して、プライベートビュー、それらに関連付けられたjavascriptおよびcssファイルを保存します。彼らはプライベートビューですので、私はどのユーザーもそれらにアクセスすることを望んでいません。

私は自分のcssファイルとjavascriptにリンクしているので、ブラウザがGETしようとすると、パブリックフォルダにないため「見つかりません」と表示されます。

私は、expressFileとしてhtmlをsendFileとして送信しています。

パブリックフォルダにすべてのファイルを配置してパブリックフォルダにアクセスできないようにする方法はありますか?

答えて

1

ビューが技術的にプライベートですかSENDFILEへの代替があり、そのファイルはローカルにレンダリングされると、それは事前に

ありがとうCSSやJavaScriptファイルを要求する必要はありません。それらはサーバ側でレンダリングされ、訪問者が直接アクセスできないためです。

しかし、一般的にJavascript、CSS、ビューなどのものはプライベートにしたくありません。とにかくユーザーによって表示されます。 Node.jsビューを非公開にする唯一の理由は、Node.jsでレンダリングしてからユーザーに送信する必要があるという事実だけです。

プライベートファイルがある場合は、同じことをすることができます。
それ以外の場合は、単に/publicフォルダーに配置してください。 JS/CSSコードの中に秘密を隠してはいけません。

編集(次のコメント):

あなたはそれをするカップルの方法があります。

いずれかの必要なHTML /ビュー(CSS-JS)を含む一意の応答を作成します。

render('view.ejs', { css: 'body { color: blue }' }) 

他のビューで既に行っているように、その変数をビューにレンダリングする必要があります。

あなたはまた、ファイルからそれを参照することもできます。

fs.readFile(`${__dirname}/css/style.css`, (error, styles) => { ... } 

それとも、個別のファイル要求を処理:

Node.js - external JS and CSS files (just using node.js not express)

(あなたはNode.jsのビューを使用する場合、単純にレンダリングHTMLファイルではなくこれらの1つ)

+0

はい、あなたは正しいですが、私はそれができるかどうか疑問に思っていました。だから、たとえそれらのファイルがパブリックフォルダに入っていなくても、リンクされたcssとjavascriptファイルを使ってhtmlファイルをレンダリングする方法はありますか? – LuisPinto

+0

@LuisPinto私の編集を参照 – zurfyx