実際のフロントエンドプロジェクトの開発では、このようなシナリオがあるでしょう。新しい写真が紹介されるたびに、このリソースが参照されているかどうかがわからないので、写真が保存されているリソースをクリックして1つずつ見ていきます。実際の問題は次のとおりです:
1. 画像は 1 つのディレクトリに配置されていません。画像はどこにでも存在する可能性があり、見つけるのが困難です。
2時間と労力がかかります
3. 画像リソースは繰り返し導入される可能性があります
能力がある場合は、プロジェクトの画像リソースをまとめてリストしてください。を表示し、導入パスを簡単に確認できるようにすることで、開発の物理的な作業を大幅に節約できます。
そのような能力を身につけたい場合、何を考慮する必要がありますか?
要件分析
- ## は任意のフロントエンド プロジェクトに統合できますが、その場合は
npm パッケージ
が必要です
- ファイルを読み取り、どの画像が存在するかを分析し、
img タグを通じて画像リソースを HTML ファイルに書き込みます
- Createサーバーで html をレンダリングします。
fs
path
http モジュール。 [関連チュートリアルの推奨事項:
nodejs ビデオ チュートリアル 、プログラミング教育 ]
実装
#1 実装公開可能な npm パッケージ
- プロジェクトの作成
npm init
パッケージ名はtest-read- img
- 次のコードを package.json
"bin": { "readimg": "./index.js" },
- エントリ ファイルindex.jsに追加します。テスト コードを追加します。これは、このファイルが実行可能なノード ファイルであることを意味します。
#!/usr/bin/env node console.log('111')
#デバッグを容易にするために、現在のモジュールをグローバルの node_modules モジュールにリンクします -
readimgExecute
を実行すると、出力 111
が表示されます。これで、npm の使用が理解できました。コマンド パッケージを使用した後、プロジェクトがパッケージをインストールして実行コマンドを設定すると、設計された npm パッケージを他のプロジェクトで実行できるようになり、これは後で実装されます。
##2 他のプロジェクトに統合する
テスト プロジェクトを作成して実行する npm init
テスト パッケージを他のプロジェクトに統合する現在のプロジェクトで、
npm link test-read-img設定実行コマンド
"scripts": { "test": "readimg" },
npm run test
3 ファイルの読み取り
test-read-img プロジェクト内で実行関数を宣言し、実行します。
"scripts": {
"test": "readimg"
},
各関数の機能について説明します- #getFileFun
: プロジェクトファイルを読み込み、読み込んだ画像ファイルのパスを返します。画像リソースは必要ありません。理由は後述します。
: テンプレート HTML ファイルを読み取り、
img を介して画像リソースを渡すことによって新しい HTML ファイルを生成します。
: 生成された HTML をサーバーに配置し、レンダリングします。 主な処理はこんな感じです。
実装getFileFun
関数
このファイルが何を行うべきかを正確に分析します
- すべてのファイルが完了するまでファイルをループします。検索後、画像リソースをフィルターで除外し、ファイルを非同期で読み取ります。ファイルが読み取られたことをどのように確認しますか?これは、
- promise
を使用して実装されています。ここでは、
getFileFun単一レイヤー ファイルの読み取りのみが実装されています.
、社内のnpmに公開しているのでご容赦ください。賢い人なら、それを再帰的に実装する方法を考えてみませんか?: 画像を返す前にファイルを最初に読み取る必要があるため、非同期コレクターは後で実行する必要があります。
具体的なコードは次のとおりです:
<pre class='brush:php;toolbar:false;'> #!/usr/bin/env node const init = async () => { const readFiles = await getFileFun(); const html = await handleHtml(readFiles); createServer(html); } init();</pre>
実装
handleHtml
ここを読んでください - -read-img
html ファイルをテストし、置き換えます。
<pre class='brush:php;toolbar:false;'> const fs = require(&#39;fs&#39;).promises; const path = require(&#39;path&#39;); const excludeDir = [&#39;node_modules&#39;,&#39;package.json&#39;,&#39;index.html&#39;]; const excludeImg = [&#39;png&#39;,&#39;jpg&#39;,&#39;svg&#39;,&#39;webp&#39;]; let imgPromiseArr = []; // 收集读取图片,作为一个异步收集器 async function readAllFile(filePath) { // 循环读文件 const data = await fs.readdir(filePath) await dirEach(data,filePath); } async function handleIsImgFile(filePath,file) { const fileExt = file.split(&#39;.&#39;); const fileTypeName = fileExt[fileExt.length-1]; if(excludeImg.includes(fileTypeName)) { // 将图片丢入异步收集器 imgPromiseArr.push(new Promise((resolve,reject) => { resolve(`${filePath}${file}`) })) } } async function dirEach(arr=[],filePath) { // 循环判断文件 for(let i=0;i<arr.length;i++) { let fileItem = arr[i]; const basePath = `${filePath}${fileItem}`; const fileInfo = await fs.stat(basePath) if(fileInfo.isFile()) { await handleIsImgFile(filePath,fileItem) } } } async function getFileFun() { // 将资源返回给调用使用 await readAllFile(&#39;./&#39;); return await Promise.all(imgPromiseArr); } module.exports = { getFileFun }</pre>
実装
ここで HTML ファイルを読み込み、サーバーに返します。
これは
- ファイルの表示のみを実装します。他のタイプの画像をサポートするにはどうすればよいですか?
- content-type
を処理するための注意事項を次に示します。
const fs = require('fs').promises; const path = require('path'); const createImgs = (images=[]) => { return images.map(i => { return `<div class='img-warp'> <div class='img-item'> <img src='${i}' / alt="ノード実践学習:プロジェクトの全画像をブラウザでプレビュー" > </div> <div class='img-path'>文件路径 <span class='path'>${i}</span></div> </div>` }).join(''); } async function handleHtml(images=[]) { const template = await fs.readFile(path.join(__dirname,'template.html'),'utf-8') const targetHtml = template.replace('%--%',` ${createImgs(images)} `); return targetHtml; } module.exports = { handleHtml }
npm run test効果
上記は実装プロセスです。
を実行すると、ブラウザの実行が確認できます。
では、効果は次のようになります:
npm public
思考
-
なぜファイルの非同期読み取りを使用するのでしょうか?
js はシングルスレッドであるため、ファイルを同期的に読み取ると、そこでスタックして他を実行できなくなります。
-
Promise を使用して画像を収集する理由
ファイルがいつ読み取られたかわからないため、非同期読み取りが完了したらファイルを使用できるからです
Promise.all
全体の処理 -
新しい HTML ファイルを読み取って、結果をブラウザに直接返してみませんか?
変換された
html を
test-read-img
ファイルに配置する場合、画像リソースも現在のディレクトリに生成する必要があります。そうしないと、HTML がread リソースが使用プロジェクト内にあるため、同等のパスのリソースが見つかりません。最後に、画像リソースを削除する必要がありますが、これも複雑さを増します;変換された
html を使用プロジェクト
に書き込むと、画像の直接パスを使用できるようになり、正しくロードされますが、HTML ファイルが追加されるため、プログラムの終了時に削除する必要があります。削除し忘れると、開発者によってリモートの場所に送信され、汚染が発生する可能性があります。提供されるプレビューは無害である必要があります。の。どちらのアプローチもお勧めできません。したがって、HTML リソースを直接返して相対ターゲット プロジェクト パスをロードしても影響はありません。
ノード関連の知識の詳細については、nodejs チュートリアル を参照してください。
以上がノード実践学習:プロジェクトの全画像をブラウザでプレビューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
