当前位置: 首页 > 知识库问答 >
问题:

前端 - vue服务端渲染时,如何动态执行下发的字符串脚本?

夏侯昊明
2023-09-13

配置的下发脚本如下,在客户端渲染时可以通过 importmap 执行。但是在服务端渲染时,如何处理第三方引入的依赖,以及如何转化成可执行的代码

配置时:

import _ from 'lodash';import axios from 'axios';export default async function(ctx) {    const bb = axios;    console.log(bb);    return _}

拿到的配置数据是字符串

"import lodash from 'lodash'\n import axios from 'axios';\n export default async function(ctx) {\n    const bb = axios;\n    console.log(bb);\n    return _;\n}\n"

共有1个答案

郤旭东
2023-09-13

在服务端渲染时,可以使用vm模块的runInThisContext方法来动态执行下发的字符串脚本。具体步骤如下:

  1. 首先,将收到的字符串脚本转化成可执行的代码。可以使用Function构造函数来将字符串转化成一个动态函数对象。
const scriptCode = "import lodash from 'lodash';\nimport axios from 'axios';\nexport default async function(ctx) {\n    const bb = axios;\n    console.log(bb);\n    return _;\n}";const scriptFn = new Function('return ' + scriptCode)();
  1. 接下来,使用vm模块的runInThisContext方法,在当前上下文中动态执行脚本。需要注意的是,在执行脚本之前,需要提前在vm模块中注入第三方库的依赖。
const vm = require('vm');const lodash = require('lodash');const axios = require('axios');const sandbox = {  lodash,  axios,  console};const context = vm.createContext(sandbox);const scriptResult = vm.runInContext(scriptFn.toString(), context);
  1. 执行完毕后,scriptResult就是脚本的返回结果,可以根据实际需要进行处理和使用。

以上是在服务端渲染时动态执行下发的字符串脚本的方法。

 类似资料:
  • 需要服务端渲染(SSR)吗? 在开始服务端渲染前,我们先看看它能给我们带来什么,以及什么时候需要用它。 SEO(搜索引擎优化) 谷歌和Bing可以很好地索引同步的JavaScript应用。同步在这里是个关键词。如果应用启动时有一个加载动画,然后内容通过ajax获取,那爬虫不会等待他们加载完成。 这意味着在异步获取内容的页面上很需要进行搜索引擎优化的时候,服务端渲染就很重要。 客户端的网络比较慢 用

  • 服务端动态渲染网页是生成网页的最常用方法, 该方法同样适用于动态生成包含 Highcharts 图表的网页。 服务端动态渲染网页的做法:后端程序读取数据库数据并按照一定的业务逻辑处理成字符串,在页面对应位置上输出。 下面我们用 PHP 举例简单说明这个过程: 实例1: 只包含数值的 <?php // php 读取数据库并生成 字符串,这里这是简单的实例 // 读取数据 while ($

  • 服务端渲染一个很常见的场景是当用户(或搜索引擎爬虫)第一次请求页面时,用它来做初始渲染。当服务器接收到请求后,它把需要的组件渲染成 HTML 字符串,然后把它返回给客户端(这里统指浏览器)。之后,客户端会接手渲染控制权。 下面我们使用 React 来做示例,对于支持服务端渲染的其它 view 框架,做法也是类似的。 服务端使用 Redux 当在服务器使用 Redux 渲染时,一定要在响应中包含应用

  • 准备动作 1、安装nodejs与安装express 安装nodejs教程:http://www.cnblogs.com/pigtail/archive/2013/01/08/2850486.html 安装 express 教程:https://www.wenjiangs.com/doc/f5jxm7ii 2、安装node-jsx(使nodejs支持jsx语法) $ npm install node

  • 实验性 SSR 支持还处于试验阶段,你可能会遇到 bug 和不受支持的用例。请考虑你可能承担的风险。 注意 SSR 特别指支持在 Node.js 中运行相同应用程序的前端框架(例如 React、Preact、Vue 和 Svelte),将其预渲染成 HTML,最后在客户端进行脱水化处理。如果你正在寻找与传统服务器端框架的集成,请查看 后端集成指南。 下面的指南还假定你在选择的框架中有使用 SSR

  • 从 3.8.0 开始,san 的服务器端渲染由 san-ssr 实现。如果你在使用 3.8.0 之前的 san,请参考 服务器端渲染(3.8.0 之前)。 San 的服务端渲染支持是基于 组件反解 的: 服务端输出的 HTML 中带有对视图无影响,能帮助组件了解数据与视图结构的标记片段 浏览器端,组件初始化时从标记片段理解组件结构,在后续用户操作时组件能正确响应,发挥作用 提示:由于组件运行环境需