当前位置: 首页 > 面试题库 >

角度模板化后捕获页面源(HTML快照)

司徒良哲
2023-03-14
问题内容

快速 angular.js 问题…

如果我的网页内容如下:

<div>{{message}}</div>

我为“消息”设置了模型

$scope.message = "Hello world!"

然后在屏幕上,div的内容将显示为

Hello world!

但是,如果我在Chrome或Firefox中查看源代码,则源代码仍然像这样

<div>{{message}}</div>

在Angular模板化之后,有什么方法可以捕获页面的源代码,所以当我查看源代码时,我会看到

<div>Hello world!</div>

例如,如果我正在一个项目中使用Angular来帮助我进行模板制作,但是客户希望HTML中的最终页面没有角度,那么在将模板应用到模板后如何捕获页面的HTML?给这个客户?


问题答案:

https://github.com/cburgdorf/grunt-html-snapshot

这是一项艰巨的任务,需要对页面进行HTML快照:它将在名为phantomjs的“假”或“无头”浏览器中运行页面,运行javascript,然后为您保存呈现的HTML。

以下是设置Grunt做到这一点的步骤,什么都不做:

  1. 从http://nodejs.org安装node.js- 这将为您安装nodenpm(节点程序包管理器)。Grunt在npm上可用。
  2. 打开命令行并导航到项目文件夹。
    • 在Windows上: cd c:/myprojects/superproject
    • 在Mac上: cd /Users/itcouldevenbeaboat/myprojects/superproject
    • 在Linux上: i hope you know how to do this already if you use linux :D
  3. 运行npm install -g grunt-cli以全局安装grunt命令行工具。
  4. 运行npm install grunt grunt-html-snapshot以将所有grunt的需要在项目中运行的文件的本地副本安装到您​​的项目中,并安装html快照任务。
  5. 使用以下内容在项目根目录中创建一个超级简单的Gruntfile.js:
        module.exports = function(grunt) {
      grunt.loadNpmTasks('grunt-html-snapshot');

      grunt.initConfig({
        htmlSnapshot: {
          all: {
            options: {
              snapshotPath: 'snapshots/',
              sitePath: 'www/index.html', 
              urls: ['#/home', '#/about', '#/users/itcouldevenbeaboat']
            }
          }
        }
      });

      grunt.registerTask('default', ['htmlSnapshot']);
    };
  1. grunt在您的项目根目录中运行,它将生成一个快照:-)

您可能需要首先在服务器上启动网站,并在Gruntfile中设置sitePath指向该网站,以使其正常运行。

如果需要有关快照配置的帮助,请查看grunt-html-snapshot页面。



 类似资料:
  • 我正在开发一个Spring Boot应用程序,使用Thymeleaf作为视图技术。我有一个html页面仪表板。src/main/resources/templates文件夹中的html,该文件夹是从控制器内部调用的。 我在静态文件夹中还有一些静态html文件。我想打电话给仪表板。来自静态html文件的html,如使用锚标记 当我的应用程序在本地运行时,我无法直接链接到此文件。例如:

  • 问题内容: 我正在尝试实施以下测试方案: 单击页面上的徽标 断言有一个新的浏览器窗口打开(Chrome中的选项卡)并检查当前URL 问题在于,在新浏览器窗口中打开的页面 是非角度页面, 而我正在执行单击操作的 主页 是 角度页面 。 这是我的第一次尝试: 失败与: 错误:等待量角器与页面同步时出错:“在窗口中找不到角度” 这是可以理解的。 我的第二次尝试是使用布尔标志: 实际上,这使该特定测试通过

  • 通过[navigator.webkitGetUserMedia] API 捕获 audio 或 video等媒体资源 进程: 渲染进程​ 从 Electron桌面应用中捕获硬盘: 1 // In the renderer process. 2 const {desktopCapturer} = require('electron') 3 ​ 4 desktopCapturer.getSources

  • 问题内容: 我有一个带有变量类型的指令myDirective。如果我运行,我希望指令使用templateUrl:x-template.html。如果我愿意,指令可以使用templateUrl:y-template.html。 这是我目前的指令。 我通过stackoverflow和angular文档阅读,但是没有找到我需要的任何东西。 我现在正在尝试按照以下方式进行操作: 但是不知道在哪里做。 你们

  • 问题内容: 我试图找出一种方法来保持我的变量与页面刷新/跨控制器。我的工作流程是 用户通过Facebook登录并获得访问令牌 用户访问令牌将与每个请求一起使用 我尝试了两种方法, 1-将令牌分配给 不工作 2-使用 但是问题是,如果刷新页面,该页面将变为空白。我是新手,无法找到刷新页面后保留数据的方法 任何帮助将非常感激 问题答案: 您可以使用。真的很容易使用。

  • 问题内容: 我首先使用body标签中的ng-app =“ myApp”初始化我的应用,这对于在首页加载时加载的所有angularized-html都适用。 稍后,我有一些代码将angularized-html加载到DOM中。 在angular 1.08中,我可以在加载后只运行angular.bootstrap($ newLoadHTML,[“ myApp”]),它将可以正常工作。$ newLoad