vue3(vite)中引入commonjs包

至于vue2中可以直接使用const package = require(“package.js”)来引入commonjs包,是因为webpack帮我们做了处理,vite建议用es module的写法,但是有很多的一些工具包还是commonjs的写法,所以挺无奈的

第一种通过import(“xxx”)的形式导入

common.js的内容

const msg = "msg";
module.exports = {
    msg
}
<script setup>
import ("common.js")
 .then(com => {
    const { msg } = com;
    console.log(msg)
 })
</script>

第二种就是安装vite的插件

vite-plugin-require-transform

首先安装

yarn add -D vite-plugin-require-transform
or
npm i vite-plugin-require-transform --save-dev
or
pnpm add -D vite-plugin-require-transform

在vite.config.js添加配置



import { defineConfig } from 'vite'
import requireTransform from 'vite-plugin-require-transform';
 
export default defineConfig({
  plugins: [
    requireTransform({
      fileRegex: /.js$|.vue$/
    }),
  ],


参考 关于Vite不能使用require问题

要将vue-cli2项目添加ssr打,需要进行以下步骤: 1. 首先,安装相应的依赖。在项目根目录下运行以下命令: ``` npm install vue-server-renderer --save npm install webpack-node-externals --save-dev ``` 这样可以安装vue-server-renderer和webpack-node-externals两个依赖。 2. 创建一个新文件,用于处理服务器端渲染。在项目根目录下创建一个`build`文件夹,并在其中创建一个名为`webpack.server.config.js`的文件。在该文件中,添加以下内容: ```javascript const path = require(&#39;path&#39;) const webpack = require(&#39;webpack&#39;) const nodeExternals = require(&#39;webpack-node-externals&#39;) module.exports = { target: &#39;node&#39;, entry: &#39;./src/server.js&#39;, // 根据实际文件名修改 output: { filename: &#39;server.bundle.js&#39;, path: path.join(__dirname, &#39;../dist&#39;), libraryTarget: &#39;commonjs2&#39; }, externals: [nodeExternals()], module: { rules: [ { test: /\.js$/, loader: &#39;babel-loader&#39;, exclude: /node_modules/ } ] } } ``` 3. 修改package.json文件,添加相应的脚本。在`scripts`字段中添加以下内容: ```json "scripts": { "build:server": "webpack --config build/webpack.server.config.js", "build": "npm run build:server && npm run build:client", "build:client": "vue-cli-service build" } ``` 这样可以添加三个命令:`build:server`用于构建服务器端渲染文件,`build:client`用于构建客户端文件,`build`用于同时构建服务器端和客户端文件。 4. 创建一个服务器端入口文件。在`src`文件夹下创建一个名为`server.js`的文件,并在其中添加以下内容: ```javascript const fs = require(&#39;fs&#39;) const path = require(&#39;path&#39;) const express = require(&#39;express&#39;) const { createBundleRenderer } = require(&#39;vue-server-renderer&#39;) const server = express() const template = fs.readFileSync(path.resolve(__dirname, &#39;../dist/index.html&#39;), &#39;utf-8&#39;) const serverBundle = require(&#39;./dist/server.bundle&#39;) const renderer = createBundleRenderer(serverBundle, { template, runInNewContext: false }) server.use(express.static(path.resolve(__dirname, &#39;../dist&#39;))) server.get(&#39;*&#39;, (req, res) => { const context = { url: req.url } renderer.renderToString(context, (err, html) => { if (err) { console.error(err) res.status(500).end(&#39;Server error&#39;) return } res.end(html) }) }) server.listen(3000, () => { console.log(&#39;Server started at http://localhost:3000&#39;) }) ``` 在这个文件中,首先引入所需的模块。然后,使用`createBundleRenderer`方法创建bundle渲染器,并传入相关参数。接着,设置静态文件目录,并处理所有请求,将渲染好的HTML返回给客户端。 5. 最后,运行`npm run build`命令进行打。打完成后,可以运行`node dist/server.bundle.js`启动服务器端。 至此,我们成功将vue-cli2项目添加了ssr打
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值