跳過到頁腳內容
NODE 說明

mimosa NPM(開發者的使用方法)

在Node.js中,[程式碼壓縮(minification](https://en.wikipedia.org/wiki/Minification_(programming) )是指透過壓縮來減少檔案大小,從而優化程式碼。 透過此過程,可以提高效能並縮短載入時間。 多餘的字符,例如空格、註釋和換行符,將被刪除。 變數名和函數名通常會被精簡。程式碼壓縮會移除不重要的預編譯程式碼,從而減少文件大小,使 JavaScript、CSS 和 HTML 檔案更加高效,下載速度也更快。 在本文中,我們將進一步了解 Mimosa 及其與 IronPDF 模組的搭配使用。

Mimosa 是一個通用的 NPM 包,發佈於近九年前,它透過使用強大的模組和功能來擴展前端開發工作流程。 執行 mimosa watch 和 build 等命令,即可自動編譯程式碼並啟用重新加載,以便變更立即反映在瀏覽器中。 該軟體包具有用於高效自訂建置流程和處理依賴項的配置。 有關 Mimosa 的更多信息,請參閱NPM 文件

從幾年前的第一個版本開始,Mimosa 就不斷發展,這個新版本對預編譯和已編譯的 JavaScript 檔案提供了更好的支援。 只需簡單安裝、配置專案的 Mimosa 設置,然後運行mimosa watch 即可開始開發。 強烈建議您查看其非常詳細的文檔,以了解如何使用 Mimosa、它的功能以及如何設定專案的 Mimosa 配置(如果您需要更詳細的資訊)。

! mimosa NPM(開發者使用指南):圖 1 - Mimosa

它採用模組化架構,因此可以輕鬆整合各種插件和擴充程序,適應不同的工作流程和技術。 此外,Mimosa 的靈活配置支援各種前端工具和框架,這在現代 Web 開發中確實是一項優勢。 總體而言,Mimosa 是一個完整的解決方案,可以提高生產力並簡化開發過程。 它由一個強大的社區驅動,該社區隨著開發者需求的演變而不斷前進。

首先,請確保您的系統中已安裝 Node.js 和 NPM。 然後,在專案中全域或本地安裝 Mimosa:

# Install Mimosa globally
npm install -g mimosa
# Install Mimosa globally
npm install -g mimosa
SHELL

若要建立新的 Mimosa 項目,請在命令列中輸入以下程式碼。

# Create a new Mimosa project named Demoproject
mimosa new Demoproject
# Create a new Mimosa project named Demoproject
mimosa new Demoproject
SHELL

配置含羞草

exports.config = {
  "modules": [
    "copy",
    "server",
    "jshint",
    "csslint",
    "require",
    "minify-js",
    "minify-css",
    "live-reload",
    "bower"
  ],
  "server": {
    "views": {
      "compileWith": "html",
      "extension": "html"
    }
  }
}
exports.config = {
  "modules": [
    "copy",
    "server",
    "jshint",
    "csslint",
    "require",
    "minify-js",
    "minify-css",
    "live-reload",
    "bower"
  ],
  "server": {
    "views": {
      "compileWith": "html",
      "extension": "html"
    }
  }
}
JAVASCRIPT

mimosa-config.js是 Mimosa 建置系統的配置文件,用於配置前端開發的多個方面。 一套模組支援copy ,用於文件管理; server ,用於設定本地開發伺服器; jshintcsslint分別用來檢查 JavaScript 和 CSS 檔案; minify-jsminify-css ,用於壓縮 JavaScript 和 CSS 檔案以提高效能。

此外,它還支援因程式碼更改而在瀏覽器刷新時即時重新加載,並使用 Bower 作為前端依賴項。 配置還可以確保視圖模板被編譯為.html文件,以便在開發過程中正確處理 HTML 視圖。 最終實現了資產管理、原始碼優化和工作流程改進的完整配置。

開始觀看含羞草

最後,設定好 Mimosa 的各項參數後,啟動監視程序,它會在檔案發生變更時自動重新編譯檔案:

# Start the Mimosa watch process
mimosa watch
# Start the Mimosa watch process
mimosa watch
SHELL

它會監視你的原始文件,並在必要時重新編譯它們,然後透過 LiveReload 快速刷新瀏覽器中的變更。

! mimosa NPM(開發者使用指南):圖 2 - 監控指令

以下是 Mimosa NPM 部署頁面的螢幕截圖。

! mimosa NPM(開發者使用指南):圖 3 - 編譯後的輸出

IronPDF簡介:一款PDF創建工具

IronPDF for Node.js可以解決大量基於程式設計的 PDF 任務,例如編輯現有 PDF 和將 HTML 轉換為 PDF。 IronPDF 為建立高品質 PDF 文件提供了靈活性和便利性,這對於動態建立和管理 PDF 的應用程式尤其有用。

! mimosa NPM(開發者使用方法):圖 4 - IronPDF

安裝 IronPDF 軟體包

使用 Node.js 套件管理器,透過以下命令安裝最新版本的軟體包,以在 Node.js 中啟用 IronPDF 功能。

# Install IronPDF for Node.js
npm install @ironsoftware/ironpdf
# Install IronPDF for Node.js
npm install @ironsoftware/ironpdf
SHELL

使用 IronPDF 建立 PDF 生成腳本

以下是使用 IronPDF 產生 PDF 的 Node.js 腳本。 例如,建立generatePdf.js

const IronPdf = require('@ironsoftware/ironpdf');
const { PdfDocument } = IronPdf;

// Set IronPDF configuration
const config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: 'YOUR_LICENSE_KEY' }); // Replace with your actual license key

async function generatePDF(title, content) {
  try {
    // Generate PDF from HTML content
    const pdf = await PdfDocument.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
    return await pdf.saveAsBuffer();
  } catch (error) {
    console.error('Error generating PDF:', error);
    throw error;
  }
}

module.exports = generatePDF;
const IronPdf = require('@ironsoftware/ironpdf');
const { PdfDocument } = IronPdf;

// Set IronPDF configuration
const config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: 'YOUR_LICENSE_KEY' }); // Replace with your actual license key

async function generatePDF(title, content) {
  try {
    // Generate PDF from HTML content
    const pdf = await PdfDocument.fromHtml(`<html><body><h1>${title}</h1><p>${content}</p></body></html>`);
    return await pdf.saveAsBuffer();
  } catch (error) {
    console.error('Error generating PDF:', error);
    throw error;
  }
}

module.exports = generatePDF;
JAVASCRIPT

請將&#39;YOUR_LICENSE_KEY&#39;替換為您的實際 IronPDF 許可證金鑰。

在 Express.js 應用中整合 Mimosa 和 IronPDF

在 Express.js 應用程式中整合 Mimosa(用於資產管理)和 IronPDF(用於生成 PDF):

const express = require('express');
const bodyParser = require('body-parser');
const generatePDF = require('./generatePdf'); // Import the PDF generation script

const app = express();

app.use(bodyParser.json());

// Serve assets managed by Mimosa
app.use(express.static('public'));

// Route to generate PDF
app.post('/generate-pdf', async (req, res) => {
  const { title, content } = req.body;
  if (!title || !content) {
    return res.status(400).json({ error: 'Title and content are required' });
  }
  try {
    // Generate PDF
    const pdfBuffer = await generatePDF(title, content);
    // Respond with the PDF
    res.set({
      'Content-Type': 'application/pdf',
      'Content-Disposition': 'attachment; filename="generated.pdf"'
    });
    res.send(pdfBuffer);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).json({ error: 'Failed to generate PDF' });
  }
});

// Start listening
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
const express = require('express');
const bodyParser = require('body-parser');
const generatePDF = require('./generatePdf'); // Import the PDF generation script

const app = express();

app.use(bodyParser.json());

// Serve assets managed by Mimosa
app.use(express.static('public'));

// Route to generate PDF
app.post('/generate-pdf', async (req, res) => {
  const { title, content } = req.body;
  if (!title || !content) {
    return res.status(400).json({ error: 'Title and content are required' });
  }
  try {
    // Generate PDF
    const pdfBuffer = await generatePDF(title, content);
    // Respond with the PDF
    res.set({
      'Content-Type': 'application/pdf',
      'Content-Disposition': 'attachment; filename="generated.pdf"'
    });
    res.send(pdfBuffer);
  } catch (error) {
    console.error('Error generating PDF:', error);
    res.status(500).json({ error: 'Failed to generate PDF' });
  }
});

// Start listening
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
JAVASCRIPT

定義一個路由,該路由使用 POST 方法處理/generate-pdf請求。它會從請求體中提取titlecontent ,並驗證它們是否存在。如果缺少任何字段,則會傳回狀態碼 400 並附帶錯誤訊息。 否則,它將嘗試透過呼叫generatePDF並提供資料來產生PDF

如果成功,這將建立一個回應頭,指示回應內容為 PDF 文件,並附加一個文件名以供下載。 然後它會將生成的 PDF 文件作為回應返回。 如果產生 PDF 失敗,它會記錄錯誤並以 500 狀態和錯誤訊息回應。

最後,它將監聽 3000 端口,並在控制台上登入一條訊息,表明伺服器正在運行,可透過http://localhost:3000存取。 下面這張截圖顯示的是使用 Postman 工具從 Mimosa 模組產生的 PDF 檔案。

mimosa NPM(開發者使用指南):圖 5 - PDF 輸出

IronPDF 的許可

上述程式碼需要許可證密鑰才能在不顯示浮水印的情況下運作。 在此註冊的開發者將獲得試用許可證。 您可以透過提供電子郵件地址來註冊此免費試用版。

結論

與 Mimosa 和 IronPDF 的集合成為前端資產管理提供了一個無縫的解決方案,PDF 生成在 Node.js 環境中實現。 Mimosa 可以有效率地完成 CSS、JavaScript 和其他資源的編譯、壓縮和即時重載,從而確保您的 Web 應用程式始終保持最新狀態並具有回應能力。此外,IronPDF 還提供了強大的 PDF 文件創建功能,可以輕鬆地將任何動態生成的 HTML 內容轉換為專業樣式的 PDF 文件。

該組合透過自動化資產管理和文件生成,簡化了開發工作流程,從而使開發人員有機會開發出高品質的應用程式。 同時,Mimosa 和 IronPDF 強強聯手,為現代 Web 應用程式提供管理 Web 資產和產生可列印文件的一體化方法,從而提高效率和功能。 為了幫助您成為更優秀的程式設計師,並滿足現代應用程式的要求,您也可以了解Iron Software 的其他解決方案。

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。