Tag: 单页面应用程序

PhantomJS没有正确地提供JS和CSS文件

我有一个节点服务器运行并监听端口8080.有一个mod_rewrite规则处于活动状态,将Botsredirect到此端口。 RewriteCond %{HTTP_USER_AGENT} (googlebot|adsbot-google|bingbot|msnbot|psbot|gigabot|twitterbot|linkedinbot|yahoo-mmcrawler|pingdom\.com_bot) [NC] RewriteRule ^ http://127.0.0.1:8080%{REQUEST_URI} [P] 节点脚本依赖phantomjs脚本来打开漫游器请求的任何URL并返回内容。 代码取自http://backbonetutorials.com/seo-for-single-page-apps/ 我通过在本地机器上运行phantomjs并使用相同的phantomjs代码直接请求我的网页来testing这一点。 结果与“crawl as google”表示的一样(google网站pipe理员工具),也就是说CSS和JS文件没有被phantomjs正确提供。 CSS文件只包含 <html><head></head><body></body></html> 没有实际的CSS内容。 JS文件有 <html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"> 插入任何JS代码之前的最开始。 因此,当谷歌试图抓取和呈现页面布局被打破,JS错误抛出。 任何提示? 谢谢。

我的第一个Node.js服务器:无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING

以下服务器应该是: 情况#1:如果请求是http://localhost:8080则服务mysitename.html CASE#2:如果请求是http://localhost:8080/mysitename.html则提供相关文件 如果请求是http://localhost:8080/contactform?name=..&..&…etc. CASE#3会向我发送电子邮件http://localhost:8080/contactform?name=..&..&…etc. 如果我访问http://localhost:8080/mysitename.html一切工作正常。 mysitename.html被加载,然后通过它加载所有后续的内容(.js,.css,.png等)。 问题:但是,如果我访问http://localhost:8080 ,则会发生以下情况: 我在浏览器的(Chrome)控制台上得到一个无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误。 `mysitename.html'在客户端上出现损坏。 DOM的一部分丢失,当我尝试查看源页面时,它只是挂起,实际上并没有加载。 只加载DOM的一部分是奇怪的,因为这个文件的所有DOM元素都是静态的/硬编码的。 令人困惑的是,其他内容(.js,.css等)被加载,但没有任何实际显示,因为损坏.html。 CASE#1是否被后面的CASE#2中断? 我究竟做错了什么? CASE#2最初有一个错误,导致Johnny Estilles发现一个无限循环(见下面的答案)。 现在已经解决了这个问题,但是现在出现了上述问题。 server.js // setting up email handler var nodemailer = require('nodemailer'); var emailHandlerService = 'Gmail'; var emailHandlerAddress = ******; var emailHandlerPassword = ******; var transporter = nodemailer.createTransport({ service: emailHandlerService, auth: { user: emailHandlerAddress, pass: emailHandlerPassword […]

预期的响应包含一个数组,但有一个对象

所以我是Angular的新手,我也研究过其他的解决scheme,但似乎没有人为我工作。 我的应用程序需要从mongodb数据库获取一些数据并将其显示给客户端。 事情是我得到的 错误:[$ resource:badcfg]操作query资源configuration错误。 预期的响应包含一个数组,但有一个对象 这是我的客户端上的SchoolCtrl.js app.controller('SchoolsCtrl', function($scope, SchoolResource) { $scope.schools = SchoolResource.query(); }); 这是我的ngResource app.factory('SchoolResource', function($resource) { var SchoolResource = $resource('/api/schools/:id', {id: '@id'}, { update: {method: 'PUT', isArray: false}}); return SchoolResource; }); 这是我在服务器上的SchoolsController var School = require('mongoose').model('School'); module.exports.getAllSchools = function(req, res, next) { School.find({}).exec(function(err, collection) { if(err) { console.log('Schools could not be loaded: […]

在服务器和客户端上渲染Backbone.js应用程序

假设我有一个使用Backbone.js和Handlebars构build的Web应用程序。 作为服务器,我正在使用Node.js. 现在我想在两端进行渲染,即在服务器和客户端上。 当第一次请求路由时,服务器应该进行渲染(主要是由于性能原因)。 之后,以下所有操作都将导致客户端呈现。 这意味着我必须能够以完全相同的方式在客户端和服务器上呈现任何页面。 两端必须支持相同的路线。 我怎么能完成这个任务? 目前,我已经看到了AirBnb的rendr项目,但是这绝对会把我和Backbone.js联系起来(我不确定是否要一直坚持使用Backbone.js),而且似乎还没有完美的完成然而。 AirBnb至less不推荐用于生产用途。 任何其他想法如何做到这一点? 作为一个子问题,我也许会问:在服务器和客户端之间共享JavaScript代码的首选方式是什么? 为此,我也知道,但我可以想象,可能有更好的解决scheme。 任何提示?

如何使用React-Helmet优化SPA的SEO?

我的项目是使用react js的单页面应用程序。 我听说Google可以抓取JavaScript页面,包括反应js单页面应用程序,而不需要服务器端渲染(即使它通常对SEO更好)。 然而,当我使用网站pipe理员工具:获取和呈现为谷歌,谷歌漫游器都看到什么,以及我的网页访问者看到的是空白的。 即使我可以添加特定的url到谷歌索引,谷歌只使用我已经放在我的静态index.html文件中的标题和描述标签,它不会得到嵌套的反应头盔组件的标题和描述。 有没有人有这方面的经验? 非常感谢!

持续部署单页面应用程序?

以下是我提出的唯一解决scheme(不知道它们是否合适): 服务器端更新: 版本每个客户端请求,并具有代理路由到适当的服务器版本。 Cient端更新: 通过websocket连接通知客户端,在X空闲分钟后重新注入脚本/样式标签,从而调用2个Ajax请求更新JS / CSS文件并刷新页面的HTML。 我不知道这是不是在应用程序的早期阶段的优先事项,我应该把整个应用程序下午在凌晨的“定期维护”。 对于search引擎优化的目的,首页的HTML是由服务器发送的单一的JS / CSS文件。