小试了一下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免费内存~


20 回复

小试了一下Meteor,用Nodejs来辅助改造原来的小站

最近尝试了一下Meteor框架,想用它来改造我原来的一个小网站。这个小站原本是用Express框架编写的,并且部署在美国AppFog机房上。然而,当我使用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 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 !

Mark-Up

##下面是一些迄今为止最好的关于编程的名言名句。阅读它们时相信你会有几分愉悦,你可以在一些会谈场合引用它们,一定能为你的团队吸引到不少的好程序员。

###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,可以考虑以下几点:

  1. 预渲染:使用服务端渲染(SSR)技术,例如Next.js。
  2. 静态站点生成:使用工具如Gatsby或Gridsome生成静态HTML页面。
  3. 优化Meteor配置:确保服务器端缓存、数据库查询优化等。

内存消耗

Meteor由于其全栈特性,确实可能会消耗较多内存。可以通过优化代码和配置来减少内存占用,例如限制订阅的数据量、使用索引优化数据库查询等。

回到顶部