web中js的运用

JavaScript011

web中js的运用,第1张

用途:滑动web页面

参数说明

x:屏幕向右移动的距离

y:屏幕向下移动的距离

用途:以下方法可以删除元素的任何属性,主要用来移除时间控件的readonly属性

参数说明

css::css表达式

index:索引值,默认0,标识第一个元素

attribute:元素的某个属性,比如readonly,value,name等

用途:方便用户查看当前操作的是哪个页面元素,也方便测试人员定位问题

参数说明

css:css表达式

index:索引值,默认0,标识第一个元素

用途:由于web自动化的最大问题就是稳定性比较差,有些时候使用selenium无法点击元素,因此我们可以使用JS实现元素的点击操作

参数说明

css:css表达式

index:索引值,默认0,标识第一个元素

用途:用来清除输入框的内容

参数说明

css:css表达式

index:索引值,默认0,标识第一个元素

用途:输入框中输入内容

参数说明

css:css表达式

value:待输入的数据

index:索引值,默认0,标识第一个元素

以上所有的JS操作,还可以结合selenium中的WebElement按照以下方式实现,因为JS中查找元素的方法有限,比如xpath定位,在js中不存在

如滚动页面

参数说明

element:通过selenium中的定位方法查找到的WebElement元素对象

arguments[0]:代表execute_script()方法的第二个参数

我们简单的写个测试脚本来测试一下以上JS脚本是否能够顺利执行

js_element.py

test_js.py

由于其事件驱动和异步特性,Node.js 已经飞速发展。但是,在现代网络中,仅仅快速是不够的。如果您计划使用 Node.js 开发您的下一个 Web 应用程序,您必须采取一切可能的步骤来确保您的应用程序比平时更快。本文介绍了 10 个技巧,这些技巧可以极大地加快基于 Node 的 Web 应用程序的速度。所以,让我们一一看看。

在构建 Web 应用程序时,有时您需要进行多个内部 API 调用来获取各种数据。例如,考虑一个用户仪表板。在渲染仪表板时,您可以执行以下假设调用:

为了检索这些详细信息,您可以为每个函数创建一个单独的中间件并附加到仪表板路由。但是这种方法的问题是一个函数必须等待前一个函数完成。另一种选择是并行执行这些调用。

众所周知,由于 Node.js 的异步特性,它在并行运行多个函数方面非常高效。我们应该利用这一点。由于我上面提到的功能不相互依赖,我们可以并行运行它们。这将减少中间件的数量并大大提高速度。

为了使事情并行化,我们可以使用 async.js,这是一个有助于驯服异步 JavaScript 的 Node 模块。这是一个片段,展示了如何使用 async.js 并行运行不同的函数:

如果您想了解有关 async.js 的更多信息,请务必查看该项目的GitHub页面。

按照设计,Node.js 是单线程的。由于这个事实,同步代码可能会锁定整个应用程序。例如,大多数文件系统 API 都有其同步对应物。以下代码段显示了如何同步和异步完成文件读取操作:

但是如果您执行长时间运行和阻塞操作,您的主线程将被阻塞,直到操作完成。这会大大降低您的应用程序的性能。因此,请确保您始终在代码中使用异步 API,至少在性能关键部分。在选择第三方模块时也要小心。即使您采取一切预防措施来避免同步代码,外部库也可能会进行同步调用,从而影响您的应用程序的性能。

如果您正在获取一些不经常更改的数据,您可以将其缓存以提高性能。例如,使用以下代码片段获取最新帖子以显示在视图上:

如果你发博文不是太频繁,可以缓存posts数组,间隔后清空缓存。例如,我们可以使用redis模块来实现这一点。为此,您需要在服务器上安装 Redis。然后您可以使用调用的客户端node_redis来存储键/值对。以下片段显示了我们如何缓存帖子:

因此,首先我们检查帖子是否存在于 Redis 缓存中。如果是这样,我们从缓存中传递posts数组。否则,我们从数据库中检索内容,然后将其缓存。此外,在一段时间后,我们可以清除 Redis 缓存,以便获取新内容。

开启 gzip 压缩会极大地影响 webapp 的性能。当与 gzip 兼容的浏览器请求某些资源时,服务器可以在将响应发送到浏览器之前对其进行压缩。如果您不使用 gzip 压缩静态资源,浏览器可能需要更长时间才能获取它。

在 Express 应用程序中,您可以使用内置的express.static()中间件来提供静态内容。此外,您可以使用compression中间件来压缩和提供静态内容。这是一个显示如何执行此操作的片段:

随着 AngularJS、Ember、Meteor 等许多强大的客户端 MVC/MVVM 框架的出现,创建单页应用程序变得非常容易。基本上,您只需公开向客户端发送 JSON 响应的 API,而不是在服务器端呈现。在客户端,您可以使用框架来使用 JSON 并在 UI 上显示。从服务器发送 JSON 可以节省带宽,从而提高速度,因为您不会在每个请求中发送布局标记。相反,您只需发送纯 JSON,然后在客户端呈现。

看看我的这个教程,它描述了如何使用 Express 4 公开 RESTful API。我还写了另一个教程,展示了如何使用 AngularJS 与这些 API 交互。

在典型的 Express Web 应用程序中,会话数据默认存储在内存中。当您在会话中存储太多数据时,会增加服务器的大量开销。因此,您可以切换到其他类型的存储来保留会话数据,或者尝试最小化会话中存储的数据量。

例如,当用户登录到您的应用程序时,您可以只将他们存储id在会话中,而不是存储整个对象。随后,对于每个请求,您都可以从id. 您可能还想使用 MongoDB 或 Redis 来存储会话数据。

假设您有一个博客应用程序,它在主页上显示最新帖子。你可能会写这样的东西来使用 Mongoose 获取数据:

但问题是find()Mongoose 中的函数会获取对象的所有字段,并且对象中可能有几个字段在Post主页上不需要。例如,comments是一个这样的字段,它包含特定帖子的一组评论。由于我们没有显示评论,我们可能会在获取时将其排除。这肯定会提高速度。我们可以这样优化上面的查询:

并非所有浏览器都支持对集合进行不同的操作,例如map、reduce和。forEach为了克服浏览器兼容性问题,我们一直在前端使用一些客户端库。但是使用 Node.js,您可以确切地知道 Google 的 V8 JavaScript 引擎支持哪些操作。因此,您可以直接使用这些内置函数在服务器端操作集合。

Nginx是一个小巧轻便的 Web 服务器,可用于减少 Node.js 服务器上的负载。您可以配置 nginx 以提供静态内容,而不是从 Node 提供静态文件。您还可以设置 nginx 以使用 gzip 压缩响应,以便整体响应大小较小。因此,如果您正在运行生产应用程序,您可能希望使用 nginx 来提高速度。

最后,通过将多个 JS 文件压缩并合并为一个,可以极大地提高您的 Web 应用程序速度。当浏览器遇到一个

Node.js非常适用于Web开发,但是现在无论是一个网站,还是Web

App都已经成为包括很多不同部分,如前端、数据库、业务模块、功能模块等等的大型项目,使用Node.js从零开始进行Web开发,也许大中型团队能够

胜任,但对于个人和小型团队来说是不现实的。这时候框架就成为Web开发利器,对于个人开发来说几乎是必不可少。那么如何选择Node.js

Web开发框架呢?

首先,我们必须要弄清楚的是,我们需要的是——

程序 or 框架?

程序是已经成型的应用,你需要的是为它搭建环境、添加配置,然后就可以运行起来;框架则是应用的骨架,你需要为它添加数据模型、业务逻辑,它才能成为应用,开始提供服务。

事实上,对于Web开发来说,程序和框架的区别正越来越模糊,比如几乎妇孺皆知的Wordpress,它是一个博客程序,但它丰富的插件以及

高度的

自定义能够支持很大程度上的二次开发,在这点上它比起一些PHP框架也并不逊色。我个人认为,如果重心在于提供服务而不是掌握技术,有WordPress

这样的程序是没有必要使用框架的。

可惜的是,由于Nodejs还很年轻,目前还没有WordPress这样的程序,因此目前在Node.js开发里,如果想做出自己想要的作品,框架是必然的选择。如果是某些特定类型的应用,可以尝试一些开源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。

Node.js Web框架有哪些?

Node.js里的Web框架分为API框架和Web应用框架。前者能够开发出RESTful的API,后者也能开发出RESTful API,但还包括模板、渲染等为前端所准备的功能。

API框架的使用场景是为跨平台应用提供统一的数据模型,而渲染由前端/客户端自行解决。目前比较知名的API框架有

restify(文档、Github、NPM)

ActionHero.js(官网、Github、NPM)

LoopBack(官网、Github、NPM)

Frisby(官网、Github、NPM)

Fortune.js(官网、Github、NPM)

Web应用框架顾名思义,就是为了打造Web应用所开发的框架。这里有两种风格的Web应用框架。

一个是Sinatra风格,另一个是Rails风格。Sinatra和Rails都是Ruby语言的Web框架,后者的影响力更大也更为知名。这里简单的解释一下两种风格是什么意思。

Sinatra风格是指高度可配置,注重开发的自由度。代表性的Nodejs Web框架有:

Express(官网、Github、NPM)TJ大神开发,Node.js官方推荐

hapi(官网、Github、NPM)

koa.js(官网、Github、NPM)

flaliron(官网、Github、NPM)

total.js(官网、Github、NPM)

locomotive(官网、Github、NPM)

Rails风格则是指不重复自己和约定优于配置,以及严格遵循MVC结构开发。代表性的框架有:

Sails.js(官网、Github、NPM)

geddy(官网、Github、NPM)

CompoundJS(官网、Github、NPM) 原railswayjs

这两种风格无所谓谁优谁劣,全凭使用者的偏好。

而在这两种Web框架之外,还有更大型的框架,即全栈框架,其中的代表是MEAN。