前端工程化及其实践又名:写毕设到企业级前端(第二天)
首先要说的是, 前端不再是单一化的对于自己行业的前端了, 比如游戏前端 unity-3D,客户端,安卓,IOS,windows桌面端。以后也许会出现 一个语言配合各种插件进行无缝生成其他端的工具, 而前端想要有竞争力则必须要学会相对应的行业知识。比如做游戏需要知道点点的图形学知识。然后进行行业开发则可以。银行医院则有自己的要求。总之,大前端不是吹的。身为后端出生的我,深深感觉到了前端的发展, 毕竟2016 年的时候美工和前端有时候可以一起做,而现在已经是一个工程化的内容了
工程化仅限于前端开发,它可以应用于各种不同类型的软件开发,包括服务端开发、App开发、桌面程序开发和应用脚本开发。以下是对每个主题的介绍和简单示例:
服务端开发:
在服务端开发中,工程化通常包括自动化构建、依赖管理、测试、持续集成等方面的内容。一个常见的例子是使用Node.js开发一个基本的Web服务器:
// server.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, Server!');
});
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
在这个示例中,我们使用Node.js创建了一个简单的HTTP服务器,然后可以使用构建工具(如Webpack)和测试框架(如Jest)来进一步工程化开发流程。
App开发:
App开发包括移动应用和桌面应用开发。对于移动应用,工程化通常涉及构建、打包、测试和发布。例如,使用React Native开发一个简单的移动应用:
// App.js
import React from 'react';
import { View, Text } from 'react-native';
export default function App() {
return (
<View>
<Text>Hello, Mobile App!</Text>
</View>
);
}
对于桌面应用,工程化可以使用Electron等框架来实现。例如,使用Electron创建一个简单的桌面应用:
// main.js
const { app, BrowserWindow } = require('electron');
function createWindow() {
const win = new BrowserWindow({ width: 800, height: 600 });
win.loadFile('index.html');
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
应用脚本开发:
应用脚本开发包括编写用于自动化、数据处理或系统管理的脚本。例如,使用js编写一个简单的文件处理脚本:
当使用JavaScript编写应用脚本时,通常可以涉及到文件处理、数据处理、自动化任务等各种应用。以下是一个使用JavaScript编写的简单的文件处理脚本示例,用于列出当前目录下的文件:
// script.js
const fs = require('fs');
// 使用fs模块读取当前目录下的文件列表
fs.readdirSync('./').forEach((file) => {
console.log(file);
});
这个JavaScript脚本使用Node.js的核心模块 fs
来读取当前目录下的文件列表,并通过 forEach
循环遍历并打印出每个文件的名称。
要运行这个脚本,你需要确保安装了Node.js。然后可以在终端中执行以下命令:
node script.js
脚本将输出当前目录下的文件列表。
这是一个简单的示例,但JavaScript可以用于处理各种应用脚本任务,包括数据转换、自动化构建、数据抓取等等。根据具体的需求,你可以编写JavaScript脚本来完成各种任务,提高工作效率。
总之,工程化不仅适用于前端开发,还可以应用于服务端开发、App开发、桌面程序开发和应用脚本开发等各种类型的软件开发。它有助于提高开发效率、代码质量和可维护性,使开发人员能够更好地管理和交付他们的项目。
实践工程化的流程:
工程化神器 Node.js:
什么是 Node.js: Node.js是一个开源的JavaScript运行环境,它允许在服务器端运行JavaScript代码。它基于Chrome V8 JavaScript引擎构建,提供了非阻塞、事件驱动的特性,使其在构建高性能、可伸缩的网络应用程序方面非常强大。
什么是Runtime: Runtime(运行时)是指在特定环境中执行代码的软件或系统。Node.js提供了JavaScript的运行时环境,允许开发人员在服务器端运行JavaScript代码,而不仅仅限于浏览器中的客户端运行。
Node和浏览器的区别:
Node.js的简单示例:
以下是一个简单的Node.js示例,用于创建一个HTTP服务器:
// server.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, Node.js Server!');
});
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
这个示例创建了一个HTTP服务器,监听指定端口,并在访问时返回 “Hello, Node.js Server!” 消息。
Node.js的强大之处在于它的生态系统,允许开发人员使用JavaScript构建服务器端应用程序,进行工程化开发,提高效率和可维护性。
工程化的构建工具:
工程化的构建工具是在软件开发中用于自动化构建、打包、优化和部署应用程序的工具。它们有助于提高开发效率、减小代码体积、优化性能和管理依赖。以下是关于工程化构建工具的一些主题:
为什么要使用构建工具:
Webpack:
Webpack是一个流行的开源JavaScript模块打包工具。它支持将各种资源(JavaScript、CSS、图片等)打包成一个或多个包,并提供代码分割、热模块替换(HMR)、插件系统等功能。
以下是一个简单的Webpack配置示例,用于打包JavaScript文件:
当使用Webpack构建工具时,你需要配置一个Webpack配置文件,该文件定义了Webpack如何处理和打包你的项目。以下是对之前提供的Webpack配置示例的更详细解释:
// webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js', // 入口文件,指定应用程序的入口点
output: {
filename: 'bundle.js', // 输出文件的名称
path: path.resolve(__dirname, 'dist'), // 输出文件的目录
},
};
现在,让我更详细地解释这个Webpack配置:
const path = require('path');
:这一行导入了Node.js的path
模块,用于处理文件路径。module.exports = { ... }
:这个配置文件导出一个JavaScript对象,其中包含了Webpack的配置选项。entry: './src/index.js'
:这里定义了应用程序的入口点。Webpack将从./src/index.js
开始构建应用程序。这是你的应用程序的起始点。output
:这个配置对象中的output
属性用于指定打包后的输出文件的配置。
filename: 'bundle.js'
:这里定义了输出文件的名称。在这个示例中,打包后的JavaScript文件将命名为bundle.js
。path: path.resolve(__dirname, 'dist')
:这里定义了输出文件的目录。path.resolve(__dirname, 'dist')
将构建的文件放在与配置文件相同的目录下的dist
文件夹中。Webpack会根据这个配置文件的设置,将项目的JavaScript文件(和其他资源,如果有的话)打包成一个或多个输出文件,并将它们存储在dist
目录中的bundle.js
文件中。
这个Webpack配置示例是一个非常简单的例子,通常Webpack配置可以更复杂,用于处理各种资源、优化代码、配置插件等等。但希望这个解释能帮助你更好地理解Webpack配置的基本结构。
Vite:
Vite是一个基于ESM(ES Module)的构建工具,旨在提供快速的开发体验。它支持快速的开发服务器、热模块替换(HMR)和按需加载等特性,适用于现代Web开发。
以下是一个简单的Vite配置示例:
// vite.config.js
export default {
build: {
outDir: 'dist',
},
};
两者的区别: