小试了一下Meteor,用Nodejs来辅助改造原来的小站
小试了一下Meteor,用Nodejs来辅助改造原来的小站
测试下Meteor,用来改造原来的小站,同是放在appfog美国的机房上,居然没有原来用express写的快。。可能是我写得不好~~ ~_~
小站,17轻松: http://www.17qingsong.com/
Meteor版: http://m17qingsong.rs.af.cm
不过,页面就是一个js,看起来叼,不过seo就差一点~~
貌似meteor很吃内存动不动就上100多M~ 幸好appfog有2g免费内存~
小试了一下Meteor,用Nodejs来辅助改造原来的小站
最近尝试了一下Meteor框架,想用它来改造我原来的一个小网站。这个小站原本是用Express框架编写的,并且部署在美国AppFog机房上。然而,当我使用Meteor进行改造后,发现性能似乎不如之前的Express版本。
小站与Meteor版对比
-
小站(Express版)
-
Meteor版
性能问题
我发现Meteor版的页面加载速度比原来的Express版慢了一些。这可能是因为我在使用Meteor时还没有完全掌握其优化技巧。尽管如此,Meteor版的小站还是有一些亮点的。
Meteor的特点
Meteor是一个全栈JavaScript框架,它简化了Web应用的开发过程。一个显著特点是页面主要由一个大的JavaScript文件组成,这种结构看起来非常现代,但对搜索引擎优化(SEO)可能不太友好。
// 示例代码:简单的Meteor应用
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
// 创建一个集合
const Todos = new Mongo.Collection('todos');
// 定义服务器端逻辑
Meteor.startup(() => {
// 服务器启动时的操作
});
// 客户端逻辑
if (Meteor.isClient) {
Template.body.helpers({
todos() {
return Todos.find({});
},
});
Template.body.events({
'submit .new-todo'(event) {
event.preventDefault();
const target = event.target;
const text = target.text.value;
Todos.insert({
text,
createdAt: new Date(), // 当前时间
});
// 清空输入框
target.text.value = '';
},
});
}
内存占用
Meteor似乎比较消耗内存,运行时很容易达到上百兆。幸运的是,AppFog提供了2GB的免费内存资源,这使得我们能够更好地支持Meteor应用的运行。
结论
虽然Meteor在某些方面带来了便利,但在性能优化方面还需要更多的学习和实践。如果你正在考虑将现有项目迁移到Meteor,建议先对Meteor进行深入了解,并进行充分的性能测试。
问一下,你这个站点的数据是自己爬虫爬的么,还是自己上传的
全自动,node.js写的爬虫~~~
正在为你准备内容 …
我发现是推送的问题,Meteor 前端订阅了后端db数据,如果是全部db数据推送过来,就会很慢,如果数据少就很快~~
嗯,我们公司也在用meteor,我也考虑到这个数据传输的问题,我 想把后台就搞成一个数据存储,把大部分逻辑写到前台,用indexedDB缓存数据,用webworker传输数据。昨天刚把indexedDB的逻辑用pouchDB替换了。今天测试webworker。有空咱们多交流。meteor好处是支持coffee。我用coffee觉得很爽。
呵呵,现在技术发展太快。我建了meteor的一个群,有空上去交流
我申请了,你是不是审核一下
楼主怎么给appfog绑定的域名啊?我申请了一个新网的域名,然后把mydns上的cname指定为xxx.ap01.aws.af.cm,并在console.appfog.com上面对于domain进行了设置,添加了我所申请的域名,但是好像没有用啊,还需要做什么工作吗?
meteor app写好了,怎么样发布到modulus上去?
curl https://install.meteor.com | /bin/sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 5239 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 100 5239 100 5239 0 0 2026 0 0:00:02 0:00:02 --:--:-- 2822
Unable to install. Meteor supports RedHat and Debian.
Installation failed.
这个东西到处是坑,win下面不好搞,到linux下挑平台
请使用mrt
装完了mrt 运行mrt create 报错
mrt create coll-app
Installing Meteor
branch: https://github.com/meteor/meteor.git#master
Installing smart packages
events.js:71
throw arguments[1]; // Unhandled ‘error’ event
^
Error: stream not writable
at WriteStream.write (fs.js:1546:24)
at FileWriter.write (/usr/lib/node_modules/meteorite/node_modules/fstream/lib/file-writer.js:65:24)
at FileReader.ondata (stream.js:38:26)
at FileReader.EventEmitter.emit (events.js:96:17)
at FileReader._getStream (/usr/lib/node_modules/meteorite/node_modules/fstream/lib/file-reader.js:53:15)
at EventEmitter.emit (events.js:96:17)
at ReadStream._emitData (fs.js:1368:10)
at afterRead (fs.js:1350:10)
at fs.read.callback (/usr/lib/node_modules/meteorite/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js:292:17)
at Object.wrapper [as oncomplete] (fs.js:362:17)
这又是个什么错?
楼主, appfog支持Meteor部署吗?
楼主,打扰了,见你说用appfog请教一个问题啊:
想用appfog,可为何网站那个sign up 点击了没反应呢,没法注册啊。。下面是appfog的注册按钮 https://console.appfog.com/signup
官网有说明, 登录功能暂停维护了
LZ, 部署Meteor应用时, 目录下的 .meteor 也上传上去吗? 有点大,里面还有mongodb !
##下面是一些迄今为止最好的关于编程的名言名句。阅读它们时相信你会有几分愉悦,你可以在一些会谈场合引用它们,一定能为你的团队吸引到不少的好程序员。
###UNIX很简单。但需要有一定天赋的人才能理解这种简单。
–Dennis Ritchie
###软件在能够复用前必须先能用。
–Ralph Johnson
###优秀的判断力来自经验,但经验来自于错误的判断。
–Fred Brooks
###‘理论’是你知道是这样,但它却不好用。‘实践’是它很好用,但你不知道是为什么。程序员将理论和实践结合到一起:既不好用,也不知道是为什么。
–佚名
###当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。
-Steve McConnell 《代码大全》
###如果建筑工人盖房子的方式跟程序员写程序一样,那第一只飞来的啄木鸟就将毁掉人类文明。
-Gerald Weinberg
###项目开发的六个阶段:
充满热情 醒悟 痛苦 找出罪魁祸首 惩罚无辜 褒奖闲人 –佚名
###优秀的代码是它自己最好的文档。当你考虑要添加一个注释时,问问自己,“如何能改进这段代码,以让它不需要注释?”
-Steve McConnell 《代码大全》
###我们这个世界的一个问题是,蠢人信誓旦旦,智人满腹狐疑。
–Bertrand Russell
###无论在排练中演示是如何的顺利(高效),当面对真正的现场观众时,出现错误的可能性跟在场观看的人数成正比。
–佚名
###罗马帝国崩溃的一个主要原因是,没有0,他们没有有效的方法表示他们的C程序成功的终止。
–Robert Firth
###C程序员永远不会灭亡。他们只是cast成了void。
–佚名
###如果debugging是一种消灭bug的过程,那编程就一定是把bug放进去的过程。
–Edsger Dijkstra
###你要么要软件质量,要么要指针算法;两者不可兼得。
–(Bertrand Meyer)
##(有思想的话…)
###有两种方法能写出没有错误的程序;但只有第三种好用。
–Alan J. Perlis
###用代码行数来测评软件开发进度,就相对于用重量来计算飞机建造进度。
–比尔-盖茨
###最初的90%的代码用去了最初90%的开发时间。余下的10%的代码用掉另外90%的开发时间。
–Tom Cargill
###程序员和上帝打赌要开发出更大更好——傻瓜都会用的软件。而上帝却总能创造出更大更傻的傻瓜。所以,上帝总能赢。
–Anon
appfog内存虚标,这么多免费,怎么赚钱呢?
在这个帖子中,作者提到了使用Meteor框架来改造一个旧的小网站。Meteor是一个全栈JavaScript平台,可以快速构建实时Web应用。然而,作者发现用Meteor改造的版本在性能上不如用Express写的版本。
示例代码
假设我们要创建一个简单的博客系统,首先安装Meteor:
npm install -g meteor
然后创建一个新的Meteor项目:
meteor create blog
cd blog
接下来添加必要的包,如MongoDB数据库支持和用户认证:
meteor add accounts-password
meteor add mongo
创建一个简单的模板文件client/views/posts.html
:
<template name="posts">
<h1>Posts</h1>
{{#each posts}}
<div class="post">
<h2>{{title}}</h2>
<p>{{body}}</p>
</div>
{{/each}}
</template>
在client/views/posts.js
中添加逻辑:
Template.posts.helpers({
posts() {
return Posts.find({});
}
});
Meteor.startup(() => {
if (Posts.find().count() === 0) {
Posts.insert({ title: "First Post", body: "This is the first post." });
Posts.insert({ title: "Second Post", body: "This is the second post." });
}
});
确保有一个Posts
集合定义在server/collections/posts.js
:
Posts = new Mongo.Collection("posts");
最后,在客户端的HTML文件中包含模板:
<head>
<title>Blog</title>
</head>
<body>
{{> posts}}
</body>
性能问题
作者提到Meteor页面只有一个JS文件,这确实使得页面加载速度快,但SEO较差。为了改善SEO,可以考虑以下几点:
- 预渲染:使用服务端渲染(SSR)技术,例如Next.js。
- 静态站点生成:使用工具如Gatsby或Gridsome生成静态HTML页面。
- 优化Meteor配置:确保服务器端缓存、数据库查询优化等。
内存消耗
Meteor由于其全栈特性,确实可能会消耗较多内存。可以通过优化代码和配置来减少内存占用,例如限制订阅的数据量、使用索引优化数据库查询等。