随着企业业务的复杂化和数字化的推进,全栈开发越来越成为一个非常热门的话题。而作为前端工程师,我们需要学习和掌握更多的技术栈来开发全栈应用,以承担更多的业务需求。
在本文中,我们将介绍如何使用 Next.js + React Native 快速搭建全栈系统,从而使开发变得更加高效和优雅。
什么是 Next.js 和 React Native
Next.js 是一款 React 框架,它将 React 与 Node.js 结合在一起,以构建更快的 Web 应用程序。它支持静态生成、服务端渲染和客户端渲染,具有超高的性能和极佳的开发体验。随着 Next.js 的不断发展,它已经成为构建现代 Web 应用程序的首选框架之一。
React Native 则是 Facebook 所开发的一种新型移动应用开发框架,它可以让我们用 JavaScript 和 React 来构建 iOS 和 Android 原生应用。这意味着,我们不再需要学习 iOS 或 Android 平台固有的技术栈,就可以直接使用 React 开发移动应用,从而实现跨平台开发的效果。
用 Next.js + React Native 构建全栈系统
在本文中,我们将结合 Next.js 和 React Native,来构建一个全栈系统。这个系统包括 Web、iOS 和 Android 三个平台上的应用程序,它们将共享相同的代码库,并使用相同的后端 API。
系统架构
首先,让我们来看一下这个全栈系统的架构:
如图所示,这个全栈系统由三个部分组成:
- 前端:Web、iOS 和 Android 三个平台上的应用程序,他们共享相同的代码库,使用 React Native 技术来进行跨平台开发。
- 后端:一个提供 API 的 Node.js 服务器,使用 Express 框架来处理 HTTP 请求。
- 数据库:使用 MongoDB 作为数据存储。
下面我们将逐步介绍如何搭建这个全栈系统。
搭建后端 API
首先,我们需要创建一个 Node.js 服务器,并使用 Express 框架来处理 HTTP 请求。可以在命令行中执行以下命令:
$ mkdir server $ cd server $ npm init -y $ npm install express mongodb
然后在 server
目录下创建一个名为 index.js
的文件,内容如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - ------------------------------- ----- --- - ---------- ----- --- - ---------------------------- ----- ------ - ------------ --- --- ------------------------ ------------- ------- - ---------------------- ------------ -- --------- -- - ------------------ ---------------- ---------- - ---------------- ------ ------- -- ---- ------- --- --- --------------------- ------------- ---- - ----- ----- - --------------------------------------------------- ----- - --------------- --- ---
代码的解释如下:
- 首先,我们引入了 Express 和 MongoDB 客户端依赖。
- 然后我们创建了一个实例
app
。 - 接着定义了一个 MongoDB 连接
url
和数据库名称dbName
。 - 然后我们创建了一个 MongoDB 客户端,连接到数据库,并将其保存在变量
db
中。 - 在启动 Express 服务器之前,我们根据 MongoDB 客户端连接成功的事件启动服务器,并指定端口号 3000。
- 然后我们定义了一个 GET 路由
/api/items
,用于获取事项列表。 - 在路由处理函数中,我们查询 MongoDB 数据库中的
items
集合,并将结果转换为 JSON 格式并回传给客户端。
在命令行中执行以下命令以启动 API 服务器:
$ node server/index.js
现在,在浏览器中访问 http://localhost:3000/api/items
,应该能看到从 MongoDB 数据库中获取到的事项列表。
搭建 Web 应用程序
接下来,我们将使用 Next.js 框架来构建 Web 应用程序。
首先,在命令行中执行以下命令,以创建一个 Next.js 应用:
$ npx create-next-app web
然后,我们需要将应用程序与后端 API 进行连接。在 web
目录下创建一个名为 .env.local
的文件,内容如下:
API_URL=http://localhost:3000
值得注意的是,在 Next.js 应用程序中,.env.local
文件是用于存储私密配置信息的文件。
接着,我们需要定义一个 React 组件来渲染事项列表。在 web
目录下创建一个名为 Items.js
的文件,内容如下:
-- -------------------- ---- ------- ------ - --------- --------- - ---- -------- ------ ------- -------- ------- - ----- ------- --------- - ------------- ----- -------- ------------ - ----- --- - ----- ------------------------------------------ ----- ---- - ----- ----------- --------------- - ------------ -- - ------------- -- ---- ------ - ---- --------------- -- - --- ------------------------------- --- ----- -- -
代码的解释如下:
- 首先,我们引入了 React 中的
useState
和useEffect
钩子函数。 - 然后定义了一个函数组件
Items
,用于渲染事项列表。 - 在组件内部,我们使用
useState
钩子函数定义了一个状态变量items
,初始值为空数组。 - 接着定义了一个异步函数
fetchItems
,用于从后端 API 中获取事项列表。 - 在
useEffect
钩子中,我们通过调用fetchItems
方法来初始化items
状态。 - 接着我们通过循环渲染
items
中的数据,来显示每个事项的名称。
最后,我们需要在 pages/index.js
文件中使用 Items
组件来渲染页面。将文件内容改成如下:
-- -------------------- ---- ------- ------ ----- ---- ---------------------- ------ ------- -------- ------ - ------ - ----- ------ ---------- ------ -- ------ -- -
现在,我们可以在命令行中执行以下命令,启动 Web 应用程序:
$ npm run dev
在浏览器中访问 http://localhost:3000
,应该能看到我们所创建的事项列表了。
搭建移动应用程序
最后,我们将使用 React Native 框架来构建 iOS 和 Android 移动应用程序。以下所有命令都需要在 web
目录下执行。
首先,在命令行中执行以下命令,以创建一个名为 mobile
的 React Native 应用程序:
$ npx react-native init mobile
接着,我们需要在 mobile
应用程序的 package.json
文件中添加以下依赖:
-- -------------------- ---- ------- - -- --- --------------- - -- --- ----------------------- --------- ------------------- --------- ------------------------- --------- -------------------------- --------- ----------------------- --------- -------------------------------------- --------- ------- ---------- --------------------- ---------- -------- --------- -- -- --- -
然后在命令行中执行以下命令,以安装新的依赖项:
$ npm install
接着,我们需要创建一个名为 Items.js
的组件,用于渲染事项列表。在 mobile/src
目录下创建一个名为 Items.js
的文件,内容如下:
-- -------------------- ---- ------- ------ ------ - --------- --------- - ---- -------- ------ - --------- ----- ---- - ---- --------------- ------ ----- ---- -------- ------ ------- -------- ------- - ----- ------- --------- - ------------- ----- -------- ----------- - ----- - ---- - - ----- ---------------------------------------------- --------------- - ------------ -- - ------------ -- ---- ------ - ------ --------- ------------ -------------- ---- -- -- - ------ ------------------------ ------- -- ------------------ -- --------- -- ------- -- -
和 Web 应用程序中的 Items.js
类似,只是将渲染方式改成了适合移动应用程序的 FlatList。
接着,将 mobile/App.js
的内容替换为如下:
-- -------------------- ---- ------- ------ ----- ---- -------- ------ - ------------------ - ---- ------------------- ------ - -------------------- - ---- ------------------------- ------ - ------- - ---- ----------------------- ------ ----- ---- -------------- ----- ------------ - ---------------------- ------ - ------- ------ ------------------ - ------------ --- ------- -- -- -------- - ------- -------- ------------------ - ------------ ---- ------ -- -- --- ----- ------------ - --------------------------------- ------ ------- -------- ----- - ------ ------------- --- -
上述代码使用了 react-navigation
和 react-navigation-stack
的库,并定义了两个屏幕:Items
和 WebView
。
最后,在命令行中执行以下命令,启动 Expo 程序:
$ npm start
然后,扫描 QR 码或按照终端中的指示,打开 Expo 应用程序。
现在,我们已经成功搭建了一个全栈系统,包括 Web、iOS 和 Android 三个平台上的应用程序。他们共享相同的代码库,并使用相同的后端 API。
结论
在本文中,我们介绍了如何使用 Next.js + React Native 框架快速搭建一个全栈系统。我们从后端 API 开始,然后构建了 Web 应用程序和移动应用程序。这种方式构建的全栈系统,能够通过 React Native 进行跨平台开发,从而使开发变得更加高效和快速。我们相信,这种技术栈的组合将会成为未来全栈开发的主流。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67133289ad1e889fe20b132e