{ "version": "https://jsonfeed.org/version/1", "title": "Meteor", "description": "Meteor: the realtime Javascript framework that's going to change the way you build web applications.", "home_page_url": "go/meteor", "feed_url": "feed/meteor.json", "icon": "https://cdn.v2ex.com/navatar/d64a/340b/530_large.png?m=1414522195", "favicon": "https://cdn.v2ex.com/navatar/d64a/340b/530_normal.png?m=1414522195", "items": [ { "author": { "url": "member/qile1", "name": "qile1", "avatar": "https://cdn.v2ex.com/gravatar/03b6474fdca2de3813a9860d19acdaf8?s=73&d=retro" }, "url": "t/462633", "title": "meteor \u66f4\u65b0 1.7 \u540e\u662f\u4e0d\u662f\u539f\u6765\u9879\u76ee\u65e0\u6cd5\u5728\u65b0\u7248\u672c\u8fd0\u884c\u4e86", "id": "t/462633", "date_published": "2018-06-12T16:19:25+00:00", "content_html": "

\u6211\u770b\u5b98\u65b9\u6559\u7a0b\u53ca\u901a\u7528\u6559\u7a0b\u597d\u50cf\u90fd\u65e0\u6cd5\u76f4\u63a5\u8fd0\u884c\n\u6709\u7684\u63d0\u793a\u6570\u636e\u5e93\u6240\u5728\u6587\u4ef6\u7cfb\u7edf nfs \u6ca1\u6709\u9501\u673a\u5236\u8fd8\u662f\u4e0d\u652f\u6301\u9501

\n" }, { "author": { "url": "member/firstfeel", "name": "firstfeel", "avatar": "https://cdn.v2ex.com/gravatar/85a30e7ba9d1ee80f9767cf8f19504cc?s=73&d=retro" }, "url": "t/332614", "title": "Meteor \u5728\u56fd\u5185\u65e0\u6cd5\u5b89\u88c5\u5305\u600e\u4e48\u529e\uff1f", "id": "t/332614", "date_published": "2017-01-06T02:32:53+00:00", "content_html": "

\u6211\u4f7f\u7528\u7684\u662f\u963f\u91cc\u4e91\u670d\u52a1\u5668\u3002\u662f\u53ef\u4ee5\u5b89\u88c5 Meteor \u6846\u67b6\u7684\uff0c\u4f46\u5728\u521b\u5efa\u5e94\u7528\u5e76 Meteor update \u65f6\uff0c\u6216\u8005\u5b89\u88c5 flow-router \u7b49\u5305\u65f6\uff0c\u5b8c\u5168\u5361\u4f4f\uff0c\u5b89\u88c5\u4e0d\u4e86\u3002

\n

\u5404\u4f4d\u5927\u795e\uff0c\u8bf7\u6559\u5982\u4f55\u89e3\u51b3\u6b64\u95ee\u9898, \u8c22\u8c22\uff01

\n" }, { "author": { "url": "member/firstfeel", "name": "firstfeel", "avatar": "https://cdn.v2ex.com/gravatar/85a30e7ba9d1ee80f9767cf8f19504cc?s=73&d=retro" }, "url": "t/325696", "title": "\u5f3a\u70c8\u5efa\u8bae\u3001\u8981\u6c42\u559c\u6b22 Meteor \u7684\u540c\u5b66\u4eec\u4e00\u8d77\u641e\u4e2a Meteor \u793e\u533a\u5427", "id": "t/325696", "date_published": "2016-12-06T08:20:54+00:00", "content_html": "

\u8fd9\u4e00\u65f6\u95f4\u8ff7\u4e0a\u4e86 Meteorjs \u6846\u67b6\u3002\u4e00\u8fb9\u770b docs.meteor.com \u3001 guide.meteor.com \uff0c\u540c\u65f6\u4e5f\u5728\u770b Meteor in Action \uff0c Getting Started with Meteor.js Javascript Framework, Second Edition \u7b49\u4e66\u3002

\n

\u540c\u65f6\u53c8\u5f88\u5b64\u72ec\uff0c\u60f3\u4ea4\u6d41\u3001\u5b66\u4e60\uff0c\u5374\u6ca1\u6709\u5730\u65b9\u3002 meteorhub.org \u51e0\u4e4e\u6253\u4e0d\u5f00\uff0c\u56fd\u5185\u4f3c\u4e4e\u4e5f\u6ca1\u6709\u793e\u533a\u53ef\u4ee5\u53bb\u4e0a\u9762\u5b66\u4e60\u7684\u3002\u540e\u6765\u81ea\u5df1\u8349\u8349\u5f04\u4e86\u4e2a\u7f51\u7ad9 https://www.ameteor.com \u3002

\n

\u771f\u8bda\u7684\u5e0c\u671b\u6709\u559c\u6b22 Meteor \u7684\u670b\u53cb\uff0c\u53ef\u4ee5\u4e00\u8d77\u505a\u4e00\u4e0b\u8fd9\u4e2a\u4e8b\u60c5\uff0c \u5c31\u662f\u5f04\u4e2a\u9ad8\u8d28\u91cf\u7684 Meteor \u793e\u533a\u7f51\u7ad9\uff0c\u8ba9\u66f4\u591a\u559c\u6b22 Meteor \u7684\u670b\u53cb\u53ef\u4ee5\u805a\u5728\u5730\u4e00\u8d77\u5b66\u4e60\u3001\u4ea4\u6d41\u3002

\n

\u8c22\u8c22\u5927\u5bb6\u3002

\n" }, { "author": { "url": "member/russj", "name": "russj", "avatar": "https://cdn.v2ex.com/avatar/1592/2281/27571_large.png?m=1490880089" }, "url": "t/291316", "title": "Meteor Mantra \u4ecb\u7ecd", "id": "t/291316", "date_published": "2016-07-09T03:15:33+00:00", "content_html": "

Mantra \u662f\u4e00\u79cd\u57fa\u4e8e Meteor 1.3+\u3001 React \u548c ES2015 \u7684\u5e94\u7528\u7a0b\u5e8f\u67b6\u6784\u3002\u5b83\u4e0d\u662f\u4e00\u4e2a\u6846\u67b6\uff0c\u800c\u662f\u4e00\u5957\u5982\u4f55\u6784\u5efa Meteor App \u7684\u6807\u51c6\uff0c\u540c\u65f6\u4e5f\u6709\u4e00\u5957\u76f8\u5173\u5f00\u6e90\u5e93\u6765\u63d0\u9ad8\u4ee3\u7801\u7f16\u5199\u6548\u7387\u3002

\n

\u7b80\u5355\u6765\u8bf4\uff0c Mantra \u662f\u5173\u4e8e\u5982\u4f55\u7ec4\u7ec7\u4f60\u7684 Meteor \u5e94\u7528\u4ee3\u7801\u7684\u6807\u51c6\uff0c\u7279\u522b\u662f\u524d\u7aef\u90e8\u5206 (\u57fa\u4e8e React)\uff0c\u5f53\u7136\u5b83\u5bf9\u540e\u7aef\u4ee3\u7801\u7684\u7ec4\u7ec7\u4e5f\u6709\u8981\u6c42\u3002

\n

\u5982\u679c\u4f60\u719f\u6089 React \uff0c Mantra \u7c7b\u4f3c\u4e8e Flux \uff0c\u8bb2\u7a76\u7684\u662f\u5bf9\u6570\u636e\u6d41\u7684\u63a7\u5236\uff0c\u4f46\u662f\u89c4\u5b9a\u5f97\u66f4\u52a0\u7ec6\u81f4\u3002

\n

\u76ee\u7684

\n

Mantra \u7684\u76ee\u7684\u662f\u8ba9\u7a0b\u5e8f\u5199\u51fa\u66f4\u6613\u4e8e\u7406\u89e3\u548c\u7ef4\u62a4\u7684\u4ee3\u7801\u3002\u5b83\u5bf9\u51e0\u4e4e\u6240\u6709\u7684\u60c5\u51b5\u90fd\u6709\u4e00\u4e2a\u6807\u51c6\uff0c\u53e6\u5916\u8fd8\u4e3a Meteor App \u589e\u52a0\u5355\u5143\u6d4b\u8bd5\u8986\u76d6\u7387\u3002

\n

\u548c Perl \u7c7b\u4f3c\uff0c Javascript \u7684\u4e00\u4e2a\u96be\u70b9\u5c31\u662f\u540c\u6837\u4e00\u4e2a\u95ee\u9898\u6709\u592a\u591a\u5b9e\u73b0\u65b9\u5f0f\uff0c\u800c\u4e14\u53ef\u80fd\u90fd\u662f\u6700\u4f73\u89e3\u51b3\u65b9\u6848\u3002\u6240\u4ee5\u7ecf\u5e38\u662f\u4e0d\u540c\u7684\u4eba\u4f7f\u7528\u4e0d\u540c\u7684\u65b9\u6cd5\u3002 Mantra \u8ba9 Meteor App \u6709\u4e00\u4e2a\u7edf\u4e00\u7684\u7ed3\u6784\uff0c\u9075\u5faa\u76f8\u540c\u7684\u6807\u51c6\uff0c\u5c31\u50cf\u8bbe\u8ba1\u6a21\u5f0f\u4e00\u6837\uff0c\u964d\u4f4e\u5927\u5bb6\u7406\u89e3\u4ee3\u7801\u7ed3\u6784\u7684\u96be\u5ea6\uff0c\u786e\u4fdd\u6a21\u5757\u4e4b\u95f4\u89e3\u8026\uff0c\u50cf Flux \u4e00\u6837\u8ba9\u6570\u636e\u5355\u5411\u6d41\u52a8\uff0c\u8fd9\u6837\u7ef4\u62a4\u4ee3\u7801\u66f4\u52a0\u5bb9\u6613\u3002

\n

Mantra \u4f7f\u7528\u7684\u539f\u5219\u5f88\u6709\u524d\u77bb\u6027\uff0c\u80fd\u591f\u5f88\u957f\u65f6\u95f4\u4e0d\u4f1a\u8fc7\u65f6\uff0c\u540c\u65f6\u4e5f\u5141\u8bb8\u5176\u4ed6\u4eba\u505a\u5fc5\u8981\u7684\u6539\u53d8\u3002

\n

\u504f\u91cd\u524d\u7aef

\n

\u73b0\u5728\u7684 Web App \u7684\u5927\u90e8\u5206\u4ee3\u7801\u90fd\u662f\u5728\u524d\u7aef\u3002\u540e\u7aef\u7684\u4ee3\u7801\u903b\u8f91\u76f8\u5bf9\u7b80\u5355\u4e5f\u597d\u7ba1\u7406\uff0c\u540e\u7aef\u7684\u96be\u70b9\u5728\u4e8e\u6027\u80fd\u4f18\u5316\uff0c\u7279\u522b\u662f\u5927\u5e76\u53d1\u7684\u5904\u7406\uff0c\u6570\u636e\u5e93\u7b49\u3002

\n

Mantra \u7684\u6838\u5fc3\u5728\u5982\u4f55\u7ec4\u7ec7\u5ba2\u6237\u7aef\u4ee3\u7801\u3002\u5b83\u5021\u5bfc\u524d\u540e\u7aef\u4ee3\u7801\u5206\u79bb\uff0c\u524d\u7aef\u4e0d\u7528\u77e5\u9053\u540e\u7aef\u4ee3\u7801\u662f\u5982\u4f55\u5b9e\u73b0\u7684\uff0c\u4f46\u662f\u53ef\u4ee5\u4ee3\u7801\u5171\u4eab\u3002\u56e0\u4e3a\u662f\u57fa\u4e8e React \u53c8\u4fa7\u91cd\u524d\u7aef\uff0c\u6240\u4ee5 Mantra \u5f88\u7c7b\u4f3c React \u7684\u90a3\u4e9b\u6807\u51c6\uff0c\u4f8b\u5982 Flux \uff0c Redux \u7b49\uff0c\u89e3\u51b3\u7684\u95ee\u9898\u4e5f\u7c7b\u4f3c\uff0c\u90fd\u662f\u63a7\u5236\u6570\u636e\u6d41 data flow \uff0c\u8ba9\u4ee3\u7801\u66f4\u6613\u7406\u89e3\u7ef4\u62a4\u3002\u5982\u679c\u4f60\u5bf9 React \u719f\u6089\uff0c\u7406\u89e3 Mantra \u5c31\u4e0d\u96be\u3002\u5982\u679c\u7406\u89e3\u6709\u56f0\u96be\uff0c\u5efa\u8bae\u591a\u770b\u770b React \u7684\u9ad8\u7ea7\u7528\u6cd5\uff0c\u4f8b\u5982 stateless/pure function \uff0c Higher Order Components \u7b49\u3002

\n

Mantra \u4e0d\u76f8\u4fe1 Universal App \uff0c\u5c31\u662f\u4e0d\u76f8\u4fe1\u4e00\u5957\u524d\u7aef\u4ee3\u7801\u9002\u5e94\u6240\u6709\u7ec8\u7aef\u5e73\u53f0\u3002\u5b83\u9f13\u52b1\u4e00\u5957\u540e\u7aef\u4ee3\u7801\uff0c\u4f46\u662f\u4e3a\u6bcf\u4e2a\u524d\u7aef\u5e73\u53f0\u5f00\u53d1\u5355\u72ec\u7684 app \u6765\u63d0\u9ad8\u7528\u6237\u4f53\u9a8c\uff0c\u5c3d\u91cf\u901a\u8fc7\u6a21\u5757\u5316\u6765\u5171\u4eab\u4ee3\u7801\u3002

\n
\n

\u5176\u4ed6 Mantra \u7684\u57fa\u672c\u4ecb\u7ecd\u53ef\u4ee5\u53c2\u770b\u8fd9\u7bc7\u4e2d\u6587\u7ffb\u8bd1 http://www.jianshu.com/p/96d6b8e64c3a

\n

\u4e0b\u9762\u6211\u6765\u8be6\u7ec6\u89e3\u91ca Mantra \u7684\u5404\u4e2a\u90e8\u4ef6\u3002

\n
\n

\u8fd9\u91cc\u4ecb\u7ecd\u7684\u987a\u5e8f\u548c\u6587\u6863\u91cc\u7684\u4e0d\u4e00\u6837\uff0c\u4e3b\u8981\u662f\u5148\u4ece\u65b0\u7684\u6982\u5ff5\u4ecb\u7ecd\uff0c\u4e0d\u7136\u5bf9\u5df2\u7ecf\u719f\u6089\u7684\u4e5f\u96be\u7406\u89e3\u3002

\n

Application Context

\n

\u5e94\u7528\u4e0a\u4e0b\u6587 context \u5bf9\u6240\u6709 action \u548c container \u5f00\u653e\u8bfb\u53d6\uff0c\u6240\u4ee5\u8fd9\u662f\u4f60\u5206\u4eab\u53d8\u91cf\u7684\u5730\u65b9\u3002

\n
import * as Collections from '/lib/collections';\nimport {Meteor} from 'meteor/meteor';\nimport {FlowRouter} from 'meteor/kadira:flow-router';\nimport {ReactiveDict} from 'meteor/reactive-dict';\nimport {Tracker} from 'meteor/tracker';\n\nexport default function () { \n return { \n Meteor, \n FlowRouter, \n Collections, \n LocalState: new ReactiveDict(), \n Tracker \n };\n}\n
\n

\u4ece\u4e0a\u9762\u4f8b\u5b50\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c context \u53ef\u4ee5\u8ba9\u5927\u5bb6\u5c11\u5199\u91cd\u590d\u7684\u4ee3\u7801\uff0c\u53c8\u53ef\u4ee5\u5728\u4e0d\u540c\u6a21\u5757\u4e4b\u95f4\u5206\u4eab\u53d8\u91cf\u3002

\n

Actions

\n

\u5904\u7406\u4e1a\u52a1\u903b\u8f91\u7684\u6a21\u5757\u3002\u5305\u62ec\u9a8c\u8bc1\uff0c\u72b6\u6001\u7ba1\u7406\u548c\u8fdc\u7a0b\u6570\u636e\u4ea4\u4e92\u3002

\n

Action \u5c31\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u51fd\u6570\u800c\u5df2\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u5fc5\u987b\u662f\u5e94\u7528\u7684\u4e0a\u4e0b\u6587 Context \u3002 Action \u4e0d\u5f97\u4f7f\u7528\u5f15\u5165\u9664\u4e86\u53c2\u6570\u4ee5\u5916\u7684\u4efb\u4f55\u53d8\u91cf\u548c\u6a21\u5757\uff0c\u751a\u81f3\u5168\u5c40\u53d8\u91cf\uff0c\u4f46\u662f\u53ef\u4ee5\u4f7f\u7528\u5e93\u51fd\u6570\u3002

\n
export default { \n create({Meteor, LocalState, FlowRouter}, title, content) { \n if (!title || !content) { \n return LocalState.set('SAVING_ERROR', 'Title & Content are required!'); \n } \n\n LocalState.set('SAVING_ERROR', null); \n\n const id = Meteor.uuid(); \n // There is a method stub for this in the config/method_stubs \n // That's how we are doing latency compensation \n Meteor.call('posts.create', id, title, content, (err) => { \n if (err) { \n return LocalState.set('SAVING_ERROR', err.message); \n } \n }); \n FlowRouter.go(`/post/${id}`); \n }, \n clearErrors({LocalState}) { \n return LocalState.set('SAVING_ERROR', null); \n }\n};\n\n
\n

UI

\n

Mantra \u53ea\u4f7f\u7528 React \u4f5c\u4e3a UI \u7ec4\u4ef6\u3002

\n

\u5728 UI \u7ec4\u4ef6\u5185\u90e8\u4e0d\u9700\u8981\u77e5\u9053 App \u7684\u5176\u4ed6\u4efb\u4f55\u5185\u5bb9\uff0c\u4e5f\u4e0d\u5e94\u8be5\u8bfb\u53d6\u548c\u4fee\u6539\u5e94\u7528\u7684 state \u3002 UI \u4f7f\u7528\u5230\u7684\u6570\u636e\u548c\u4e8b\u4ef6\u5e94\u8be5\u7531 props \u4ece container \u4f20\u5165\uff0c\u6216\u8005\u901a\u8fc7\u4e8b\u4ef6\u4f5c\u4e3a action props \u4f20\u5165\u3002\u5982\u679c UI \u7ec4\u4ef6\u4f7f\u7528\u5230\u672c\u5730 state \uff0c\u90a3\u4e48\u8fd9\u4e2a state \u4e0d\u5e94\u8be5\u88ab\u5916\u90e8\u7684\u4efb\u4f55\u7ec4\u4ef6\u4f7f\u7528\uff0c\u4ec5\u9650\u4e8e\u7ec4\u4ef6\u5185\u90e8\u4f7f\u7528\u3002

\n

Mantra \u6587\u6863\u91cc\u7ed9\u51fa\u7684\u4ee3\u7801\u793a\u4f8b:

\n
import React from 'react';\n\nconst PostList = ({posts}) => ( \n <div className='postlist'> \n <ul> \n {posts.map(post => ( \n <li key={post._id}> \n <a href={`/post/${post._id}`}>{post.title}</a> \n </li> ))} \n </ul> \n </div>\n);\n\nexport default PostList;\n
\n

\u4e0a\u9762\u7684\u4f8b\u5b50\u4ee3\u7801\u5c31\u662f React \u91cc\u7684\u65e0\u72b6\u6001\u7eaf\u51fd\u6570\u5b9e\u73b0\uff0c UI \u53ea\u8d1f\u8d23\u5c55\u793a\u754c\u9762\uff0c\u6ca1\u6709\u903b\u8f91\u3001\u72b6\u6001\u7b49\u5904\u7406\u3002

\n

State \u7ba1\u7406

\n

\u6709\u4e24\u79cd\u72b6\u6001:\u672c\u5730\u72b6\u6001\uff08\u5ba2\u6237\u7aef\uff09\u548c\u8fdc\u7a0b\u72b6\u6001\uff08\u670d\u52a1\u5668\uff09\u3002\u672c\u5730\u72b6\u6001\u4e0d\u548c\u5916\u754c\u53d1\u751f\u8054\u7cfb\uff1b\u8fdc\u7a0b\u72b6\u6001\u9700\u8981\u548c\u5916\u754c\uff0c\u4f8b\u5982\u6570\u636e\u5e93\u540c\u6b65\u6570\u636e\u3002

\n

\u7c7b\u4f3c Flux \u91cc\u7684 store \u6982\u5ff5 \uff08\u53ef\u53c2\u8003 \u4f7f\u7528 Meteor \u548c React \u5f00\u53d1 Web App\n\uff09\uff0c Meteor \u6709\u4e0d\u540c\u7684\u65b9\u5f0f\u5b9e\u73b0\uff0c\u4f8b\u5982 MiniMongo \uff0c ReactiveDict \u7b49\u3002 Mantra \u5728\u8fd9\u65b9\u9762\u5f88\u7075\u6d3b\uff0c\u6ca1\u6709\u8981\u6c42\u7528\u54ea\u4e00\u79cd\u3002\u4f46\u662f\u8fd8\u662f\u6709\u4e00\u4e9b\u89c4\u5219

\n\n

Dependency Injection \u4f9d\u8d56\u6ce8\u5165

\n

\u9996\u5148\uff0c\u4ec0\u4e48\u662f\u4f9d\u8d56\uff1f Mantra \u6709\u4e24\u79cd\u4f9d\u8d56

\n
    \n
  1. context - \u901a\u5e38\u5c31\u662f\u914d\u7f6e\uff0c models \u548c\u5404\u79cd\u6570\u636e
  2. \n
  3. actions - \u4e1a\u52a1\u903b\u8f91\u3002\u6bcf\u4e2a action \u90fd\u4ee5 context \u4e3a\u7b2c\u4e00\u4e2a\u53c2\u6570
  4. \n
\n

\u4f8b\u5982:

\n
const cOntext= { \n DB, \n Router, \n appName: 'My Blog'\n};\n\nconst actiOns= { \n posts: { \n create({DB, Router}, title, content) { \n const id = String(Math.random()); \n DB.createPost(id, title, content); \n Router.go(`/post/${id}`); \n } \n }\n};\n
\n

\u7136\u540e\u6ce8\u5165\u4f9d\u8d56\u3002 Mantra \u4f7f\u7528 react-simple-di \u8fd9\u4e2a\u5305\u6765\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165\u3002\u80cc\u540e\u5176\u5b9e\u5c31\u662f React context \u3002\u8fd9\u4e2a\u5305\u63a5\u53d7 Context \u548c Actions \u4f5c\u4e3a\u4f9d\u8d56\u3002

\n
import {injectDeps} from 'react-simple-di';\nimport Layout from './layout.jsx';\n\n// \u4e0a\u9762\u5b9a\u4e49\u7684 context \u548c actions \u5b9a\u4e49\u5728\u8fd9\u91cc\n\nconst LayoutWithDeps = injectDeps(context, actions)(Layout);\n
\n

\u73b0\u5728 LayoutWithDeps \u5c31\u53ef\u4ee5\u5728 app \u91cc\u968f\u610f\u4f7f\u7528\u4e86\u3002

\n

\u5982\u4f55\u4f7f\u7528\u4f9d\u8d56\uff1f

\n

\u9996\u5148\u521b\u5efa\u4e00\u4e2a UI \u7ec4\u4ef6\u3002\u53ef\u4ee5\u770b\u5230\u8fd9\u4e2a\u7ec4\u4ef6\u7684\u4f9d\u8d56\u662f\u901a\u8fc7 props \u4f20\u5165\u7684

\n
class CreatePost extends React.Component { \n render() { \n const {appName} = this.props; \n return ( \n <div> \n Create a blog post on app: ${appName}. <br/> \n <button OnClick={this.create.bind(this)}>Create Now</button> \n </div> \n ); \n } \n\n create() { \n const {createPost} = this.props; \n createPost('My Blog Title', 'Some Content'); \n }\n}\n
\n

\u4f7f\u7528\u4f9d\u8d56

\n
const {useDeps} from 'react-simple-di';\n\n// \u524d\u9762\u5b9a\u4e49\u7684 CreatePost react \u7ec4\u4ef6 \n\nconst depsToPropsMapper = (context, actions) => ({ \n appName: context.appName, \n createPost: actions.posts.create\n});\n\nconst CreatePostWithDeps = useDeps(depsToPropsMapper)(CreatePost);\n
\n

\u5982\u679c\u4f60\u6ca1\u6709\u5b9a\u4e49\u81ea\u5df1\u7684 mapper \u51fd\u6570\uff08\u5c31\u662f\u4e0a\u9762\u7684 depsToPropsMapper \uff09\uff0c useDeps \u5c06\u4f7f\u7528\u4e0b\u9762\u7684\u9ed8\u8ba4 mapper \u51fd\u6570\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 context \u548c actions \u4e86\u3002

\n
const mapper = (context, actions) => ({ \n context: () => context, \n actions: () => actions\n});\n
\n

Mantra \u4f7f\u7528\u4f9d\u8d56\u6ce8\u5165\u7684\u76ee\u7684\u662f\u9694\u79bb\u4ee3\u7801\u3002\u4f8b\u5982\u9694\u79bb UI \u7ec4\u4ef6\u548c actions \u3002

\n

\u4e00\u65e6\u914d\u7f6e\u597d\uff0c Applicaton Context \u5c31\u4f1a\u88ab\u6ce8\u5165\u5230\u628a Context \u4f5c\u4e3a\u7b2c\u4e00\u53c2\u6570\u7684 action \u3002

\n

Container \u540c\u6837\u4e5f\u80fd\u8bfb\u53d6 Application Context \u3002

\n

\u4e0d\u80fd\u5728\u5b50\u7ec4\u4ef6\u91cc\u6ce8\u5165\u4f9d\u8d56\uff0c\u53ea\u80fd\u662f\u6700\u4e0a\u5c42\u7ec4\u4ef6\uff0c\u901a\u5e38\u5c31\u662f Layout Component \uff0c\u4f8b\u5982\u4e0b\u9762\u4ee3\u7801\u3002

\n
import React from 'react';\nexport default function (injectDeps) { \n // See: Injecting Deps \n const MainLayoutCtx = injectDeps(MainLayout); \n // Routes related code\n}\n
\n

Container

\n

Container \u7684\u4f5c\u7528\u662f\u96c6\u6210\u3001\u7ec4\u88c5\u6570\u636e\u3002\u5b83\u7684\u4e2d\u6587\u610f\u601d\u662f\u5bb9\u5668\uff0c\u91cc\u9762\u5305\u88f9\u7684\u5c31\u662f UI \u7ec4\u4ef6\u3002\u4e3b\u8981\u529f\u80fd:

\n\n

Container \u662f\u4e00\u4e2a React \u7ec4\u4ef6\u3002\u5982\u8fd9\u7bc7\u6587\u7ae0\u6240\u8ff0\u7684 Controller-View

\n

\"Flux\"

\n

\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u4f7f\u7528\u4e00\u4e2a\u7236\u7ec4\u4ef6\uff0c\u5c31\u662f Mantra \u7684 container \u6765\u76d1\u542c\u6570\u636e\u7684\u53d8\u5316\uff0c\u5b50\u7ec4\u4ef6 UI Component \u8d1f\u8d23\u754c\u9762\u6e32\u67d3\u548c\u4e92\u52a8\u3002 Controller \u5c31\u662f\u9ad8\u9636\u7ec4\u4ef6 (Higher Order Components) HOC \u6765\u5305\u88f9 UI \u7ec4\u4ef6\u3002\u9ad8\u9636\u7ec4\u4ef6\u8d1f\u8d23\u6570\u636e\u67e5\u8be2\uff0c\u5b50\u7ec4\u4ef6\u8d1f\u8d23\u6e32\u67d3\u7b49\u3002

\n

Mantra \u4f7f\u7528 react \u2010 komposer \u6765\u4f5c\u4e3a container \u83b7\u53d6\u6570\u636e\u72b6\u6001\u3002

\n

container \u7684\u89c4\u5219

\n\n
\n

Note: \u57fa\u4e8e Mantra Draft 0.2.0

\n
\n" }, { "author": { "url": "member/livedutvchina", "name": "livedutvchina", "avatar": "https://cdn.v2ex.com/gravatar/dfb391929e4e68df8c44796699685cc4?s=73&d=retro" }, "url": "t/290651", "title": "\u4f7f\u7528 Meteor \u5f00\u53d1\u4e00\u4e2a\u793e\u4ea4\u7f51\u7edc APP", "id": "t/290651", "date_published": "2016-07-06T07:18:47+00:00", "content_html": "

\u548c\u5927\u5bb6\u5206\u4eab\u4e00\u4e2a\u89c6\u9891\uff1a

\n

https://www.livecoding.tv/johncarmack/videos/nDnyw-startup-with-meteor-for-a-social-web-app

\n

\u9879\u76ee\u8fd8\u5728\u5f00\u53d1\u4e2d\uff0c\u5927\u5bb6\u53ef\u4ee5\u53bb\u770b\u4ed6\u7684\u76f4\u64ad\u6216\u89c6\u9891\u3002

\n

\u4e3b\u8981\u4f7f\u7528\u7684\u7f16\u7a0b\u8bed\u8a00\uff1a Javascript / HTML 5 / CSS3

\n

\u4f7f\u7528\u7684\u5305\uff0c\u5e93\u548c API \uff1a Meteor.js and React.js

\n" }, { "author": { "url": "member/lizunlong", "name": "lizunlong", "avatar": "https://cdn.v2ex.com/avatar/cede/bb6e/183_large.png?m=1334370998" }, "url": "t/278218", "title": "\u9762\u5411 \u5c0f\u767d\u5f00\u53d1\u8005 \u548c \u4e13\u4e1a\u5f00\u53d1\u8005 \u7684 Meteor", "id": "t/278218", "date_published": "2016-05-12T09:01:42+00:00", "content_html": "
    \n
  1. \u5c0f\u767d\u5f00\u53d1\u8005 // \u89e3\u91ca\u4e86 Meteor \u4e3a\u4ec0\u4e48\u8981\u5148\u8fce\u5408\u5c0f\u767d\u5f00\u53d1\u8005\u3002
  2. \n
  3. \u4e13\u4e1a\u5f00\u53d1\u8005 // \u9080\u8bf7\u4e13\u4e1a\u5f00\u53d1\u8005\u56e2\u961f\u5bf9 Meteor \u91cd\u65b0\u8fdb\u884c\u5ba1\u89c6\u4e0e\u8bc4\u4f30\u3002
  4. \n
\n" }, { "author": { "url": "member/lizunlong", "name": "lizunlong", "avatar": "https://cdn.v2ex.com/avatar/cede/bb6e/183_large.png?m=1334370998" }, "url": "t/277505", "title": "Meteor \u521b\u59cb\u4eba\u773c\u4e2d\u7684\u8ba1\u7b97\u7ec8\u7aef\u53d1\u5c55\u7b80\u53f2", "id": "t/277505", "date_published": "2016-05-10T00:22:43+00:00", "content_html": "

V2EX \u9996\u53d1\uff0c\u672c\u6587\u5c06\u4e8e\u4eca\u665a\u63a8\u9001\u81f3\u6211\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\u8ba2\u9605\u8005\u3002

\n

\u4e00\u5468\u524d\uff0c\u6211\u4ece\u7f51\u7ad9\u5f00\u53d1\u7684\u6280\u672f\u53d1\u5c55\u8fd9\u4e00\u89d2\u5ea6\u8bb2\u660e Meteor \u65e8\u5728\u5e2e\u52a9\u6211\u4eec\u7f16\u5199\u51fa\u5e94\u8fd0\u65f6\u4ee3\u6f6e\u6d41\u7684\u7f51\u7ad9\u3002\u4eca\u5929\uff0c\u6211\u8bd5\u7740\u8f6c\u8ff0 Meteor \u521b\u59cb\u4eba\u4e4b\u4e00 Geoff Schmidt \u773c\u4e2d\u7684\u8ba1\u7b97\u7ec8\u7aef\u53d1\u5c55\u7b80\u53f2\u3002\u5bf9\u6bd4\u7740\u770b\uff0c\u4e5f\u53ef\u4ee5\u770b\u51fa\u4e00\u4e2a\u4eba\u770b\u5f85\u4e8b\u7269\u7684\u89d2\u5ea6\u57fa\u672c\u51b3\u5b9a\u4e86\u4ed6\u505a\u4e8b\u7684\u683c\u5c40\u3002

\n

\"Mainframe

\n

Mainframe \u662f\u4ec0\u4e48\u4e1c\u897f\uff1f\u5927\u578b\u4e3b\u673a\u3002\u4e0d\u8fc7\u5728\u8fd9\u91cc\u5b83\u7279\u6307\u4e0a\u4e16\u7eaa\u516d\u4e03\u5341\u5e74\u4ee3\u7684\u5927\u578b\u8ba1\u7b97\u673a\uff0c\u5b83\u4f53\u79ef\u5e9e\u5927\uff0c\u8ba1\u7b97\u5904\u7406\u80fd\u529b\u8fdc\u4e0d\u53ca\u73b0\u4eca\u7684 iPhone \u624b\u673a\u3002\u624b\u673a\u63e1\u4e8e\u624b\u638c\uff0c Mainframe \u5462\uff0c\u4e00\u95f4\u6559\u5ba4\u90fd\u672a\u5fc5\u653e\u5f97\u4e0b\u4e00\u53f0\u3002\u7136\u800c\uff0c\u5b83\u4ecd\u7136\u610f\u4e49\u6df1\u8fdc\uff0c\u56e0\u4e3a\u5b83\u5177\u6709\u8ba1\u7b97\u5904\u7406\u80fd\u529b\uff0c\u8fd9\u662f\u4e00\u5207\u672a\u6765\u53d1\u5c55\u7684\u6839\u57fa\u3002

\n

PC \u8fd9\u4e2a\u7f29\u5199\u5927\u5bb6\u80af\u5b9a\u719f\u6089\uff0c\u4e2a\u4eba\u8ba1\u7b97\u673a\u3002\u5b83\u7684\u610f\u4e49\u5728\u4e8e\u4f53\u79ef\u7684\u5927\u5e45\u7f29\u5c0f\uff0c\u4ee5\u53ca\u6210\u672c\u7684\u5927\u5e45\u964d\u4f4e\u3002\u7834\u574f\u6027\u521b\u65b0\u6307\u5c06\u73b0\u6709\u7684\u9700\u8981\u8f83\u9ad8\u6d88\u8d39\u80fd\u529b\u624d\u80fd\u4eab\u7528\u7684\u4e8b\u7269\u6216\u670d\u52a1\u901a\u8fc7\u521b\u65b0\u65b9\u5f0f\u91cd\u65b0\u6253\u5305\u4e3a\u9002\u7528\u4e8e\u666e\u7f57\u5927\u4f17\u6d88\u8d39\u7684\u5546\u54c1\u7684\u884c\u4e3a\uff0c\u91cd\u590d\u5373\u91cd\u8981\u3002\u51e0\u5343\u7f8e\u5143\uff0c\u4e00\u5f20\u684c\u5b50\uff0c\u4fbf\u53ef\u62e5\u6709\u4e00\u53f0\u8ba1\u7b97\u6548\u7387\u8fdc\u8d85\u4eba\u7c7b\u7684\u4e2a\u4eba\u7535\u8111\u3002\u5f53\u65f6\u7684\u73b0\u72b6\u662f\uff0c\u5de5\u5177\u51fa\u73b0\u4e86\uff0c\u4f46\u4eba\u4eec\u8fd8\u4e0d\u592a\u6e05\u695a\u80fd\u5229\u7528\u5b83\u5b9e\u73b0\u4ec0\u4e48\u3002

\n

\u76f4\u81f3\u8f6f\u4ef6\u4e1a\u53d1\u5c55\u8d77\u6765\u3002\u56fe\u5f62\u754c\u9762\u5141\u8bb8\u975e\u4e13\u4e1a\u4eba\u58eb\u4e0e\u51b7\u51b0\u51b0\u7684\u7535\u8111\u8fdb\u884c\u4ea4\u4e92\u64cd\u4f5c\uff0c\u4ece\u800c\u5e2e\u52a9\u66f4\u591a\u7684\u4eba\u4f7f\u7528\u8ba1\u7b97\u673a\u5b9e\u73b0\u4ed6\u4eec\u7684\u9700\u6c42\uff0c\u6ca1\u9519\uff0c\u53c8\u4e00\u6b21\u7834\u574f\u6027\u521b\u65b0\u3002\u4e2a\u4eba\u8ba1\u7b97\u673a\u7684\u4f7f\u7528\u8005\u5177\u5907\u4e86\u8d85\u4eba\u7684\u8ba1\u7b97\u80fd\u529b\uff0c\u4f46\u662f\u5462\uff0c\u6570\u636e\u4ea4\u6362\u8fd8\u65e0\u6cd5\u6446\u8131\u5730\u7406\u9694\u79bb\uff0c\u6700\u591a\u662f\u7528\u8f6f\u76d8\u643a\u5e26\u7740\u6709\u9650\u7684\u6570\u636e\u5f80\u6765\u4e8e\u4e66\u623f\u548c\u529e\u516c\u5ba4\u3002

\n

\u76f4\u81f3\u4e92\u8054\u7f51\u7684\u666e\u53ca\u3002\u5168\u7403\u7ecf\u6d4e\u3001\u6587\u5316\u7684\u53d1\u5c55\u901f\u5ea6\u4f9d\u8d56\u4e8e\u4f4e\u5ef6\u8fdf\u7684\u4fe1\u606f\u9001\u8fbe\u3002\u4ece\u5954\u8dd1\uff0c\u5230\u9a91\u9a6c\uff1b\u4ece\u7535\u62a5\uff0c\u5230\u4e92\u8054\u7f51\u3002\u4e0d\u4ec5\u5168\u7403\u8303\u56f4\u5185\u4fe1\u606f\u9001\u8fbe\u51e0\u8fd1\u4e3a\u96f6\u5ef6\u8fdf\uff0c\u800c\u4e14\u80fd\u591f\u627f\u8f7d\u8d8a\u6765\u8d8a\u4e30\u5bcc\u7684\u6570\u636e\u3002\u4ece\u6587\u672c\u5230\u89c6\u9891\uff0c\u4ece\u5373\u65f6\u804a\u5929\u5230\u7f51\u7edc\u76f4\u64ad\uff0c\u6ca1\u6709\u4e92\u8054\u7f51\u57fa\u7840\u8bbe\u65bd\u7684\u5efa\u8bbe\uff0c\u76f8\u5173\u7684\u670d\u52a1\u5c31\u4e0d\u53ef\u80fd\u5b9e\u73b0\u3002

\n

\u4ece\u8fd9\u91cc\uff0c\u6211\u7684\u90a3\u7bc7\u7f51\u7ad9\u53d1\u5c55\u7b80\u53f2\u5c31\u7b97\u662f\u80fd\u63a5\u4e0a\u4e86\uff0c\u6211\u77e5\u9053\u4f60\u61d2\u5f97\u770b\uff0c\u8fd9\u91cc\u7b80\u5355\u9648\u8ff0\u4e00\u4e0b\u5927\u610f\u3002\u4e92\u8054\u7f51\u8ba9\u6570\u636e\u4ea4\u6362\u6709\u4e86\u7a81\u7834\u5730\u7406\u9694\u79bb\u7684\u4f18\u52bf\uff0c\u7ed3\u5408\u62e5\u6709\u8d85\u9ad8\u8ba1\u7b97\u80fd\u529b\u7684\u670d\u52a1\u5668\uff0c\u7f51\u7ad9\u5f00\u53d1\u66f4\u503e\u5411\u4e8e\u5411\u8bbf\u95ee\u8005\u7684\u6d4f\u89c8\u5668\u4f20\u8f93\u8ba1\u7b97\u540e\u7684\u7ed3\u679c\u2014\u2014 HTML \uff1b\u73b0\u5982\u4eca\uff0c\u8bbf\u95ee\u8005\u7684\u7ec8\u7aef\u2014\u2014\u5305\u62ec\u4e2a\u4eba\u8ba1\u7b97\u673a\u548c\u624b\u673a\u2014\u2014\u8ba1\u7b97\u80fd\u529b\u8d8a\u6765\u8d8a\u5f3a\uff0c\u6709\u4eba\u5f00\u59cb\u8003\u8651\u76f4\u63a5\u5411\u8bbf\u95ee\u8005\u7684\u6d4f\u89c8\u5668\u4f20\u8f93\u6570\u636e\uff0c\u8ba9\u6d4f\u89c8\u5668\u83b7\u5f97\u6570\u636e\u540e\u5728\u672c\u5730\u8fdb\u884c\u8ba1\u7b97\u548c\u6e32\u67d3\uff0c\u8fd9\u4e00\u8f6c\u53d8\u5141\u8bb8\u7f51\u7ad9\u5f00\u53d1\u8005\u5f00\u53d1\u51fa\u4ea4\u4e92\u66f4\u590d\u6742\u7684\u7f51\u7ad9\uff0c\u8fd9\u4e00\u70b9\u6211\u5728\u4e0a\u5468\u5df2\u7ecf\u4e3e\u8fc7\u4f8b\u5b50\u4e86\uff0c\u5305\u62ec\u5f00\u6e90\u9879\u76ee\u548c\u5546\u4e1a\u7f51\u7ad9\u3002

\n

Meteor \u7684\u6982\u5ff5\u6b63\u662f\u5728\u8fd9\u4e00\u5927\u80cc\u666f\u4e0b\u63d0\u51fa\u7684\uff0c\u540c\u65f6 Meteor \u56e2\u961f\u4e5f\u5728\u8fd9\u56db\u5e74\u5185\u505a\u5230\u4e86\uff0c\u5e76\u4e14\u672a\u6765\u8fd8\u4f1a\u671d\u7740\u66f4\u5f00\u653e\u7684\u65b9\u5411\u53d1\u5c55\u3002\u4ece\u5927\u578b\u4e3b\u673a\uff0c\u5230\u4e2a\u4eba\u7535\u8111\uff1b\u4ece\u4e92\u8054\u7f51\uff0c\u5230\u79fb\u52a8\u5e94\u7528\u3002\u7ec8\u7aef\u7684\u4f53\u79ef\u4e0d\u65ad\u7f29\u5c0f\uff0c\u6210\u672c\u4e0d\u65ad\u964d\u4f4e\uff0c\u5904\u7406\u80fd\u529b\u4e0d\u65ad\u63d0\u9ad8\uff0c\u6570\u636e\u4ea4\u6362\u4e0d\u518d\u53d7\u5730\u7406\u9694\u79bb\uff0c\u8fd9\u4e00\u5207\u4e00\u5207\u7684\u57fa\u7840\u6761\u4ef6\u9884\u793a\u7740\u592a\u591a\u7684\u53ef\u80fd\u6027\uff0c\u76f4\u81f3\u76f8\u5e94\u7684\u8f6f\u4ef6\u4e1a\u518d\u4e00\u6b21\u53d1\u5c55\u8d77\u6765\u3002

\n

\u76f8\u4e92\u8fde\u63a5\u7684\u79fb\u52a8\u8bbe\u5907\u662f\u672a\u6765\u7ec8\u7aef\u7684\u7edd\u5bf9\u4e3b\u529b\uff0c\u5b83\u4eec\u6108\u52a0\u4fbf\u643a\u3001\u4fbf\u5b9c\uff0c\u8fd9\u4e00\u8d8b\u52bf\u5219\u4f1a\u6108\u52a0\u51f8\u73b0\u3002 Meteor \u73b0\u5df2\u80fd\u591f\u5168\u65b9\u4f4d\u5730\u652f\u6301\u8fd9\u4e00\u8d8b\u52bf\uff0c\u5e76\u5c06\u6301\u7eed\u8fdb\u5316\u4ee5\u5e94\u5bf9\u751f\u6001\u73af\u5883\u7684\u7a81\u53d8\u3002

\n

\u5ef6\u4f38\u9605\u8bfb\uff1a\u7b2c 2 \u5468\u56de\u987e (2016/5/2 - 5/8)

\n

\u6b22\u8fce\u8ba2\u9605\u6211\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a\u4e24\u4e2a\u5706\u70b9\u4e00\u6761\u76f4\u7ebf - /t/275760

\n" }, { "author": { "url": "member/lizunlong", "name": "lizunlong", "avatar": "https://cdn.v2ex.com/avatar/cede/bb6e/183_large.png?m=1334370998" }, "url": "t/276464", "title": "\u6211\u6700\u8fd1\u5149\u8bf4 Meteor \u7684\u597d\u8bdd\u4e86\uff0c\u4e3a\u4e86\u66f4\u597d\u7684\u770b\u6e05\u4e8b\u7269\u6b63\u53cd\u9762\uff0c\u8bf7\u5927\u5bb6\u5e2e\u5fd9\u6765\u4f7f\u52b2\u513f\u62cd\u3001\u5410\u69fd Meteor \u5427~", "id": "t/276464", "date_published": "2016-05-05T03:49:26+00:00", "content_html": "

\u597d\u8bdd\u5728\u8fd9\uff1a/t/275760

\n" }, { "author": { "url": "member/lizunlong", "name": "lizunlong", "avatar": "https://cdn.v2ex.com/avatar/cede/bb6e/183_large.png?m=1334370998" }, "url": "t/275760", "title": "\u4e00\u4e2a\u56f4\u7ed5 Meteor \u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a\u4e24\u4e2a\u5706\u70b9\u4e00\u6761\u76f4\u7ebf", "id": "t/275760", "date_published": "2016-05-02T02:36:39+00:00", "content_html": "

\u6211\u4e00\u5468\u524d\u521a\u521a\u5f00\u901a\u7684\uff0c\u4e3a\u8282\u7701\u5927\u5bb6\u65f6\u95f4\uff0c\u63a8\u8350\u5148\u770b\u770b\u9996\u5468\u56de\u987e\u3002

\n

\u611f\u5174\u8da3\u7684\u53ef\u4ee5 RSS \u8ba2\u9605\uff0c\u4e5f\u53ef\u4ee5\u53bb\u5fae\u4fe1\u641c\u7d22 \u4e24\u4e2a\u5706\u70b9\u4e00\u6761\u76f4\u7ebf \u8ba2\u9605\u5173\u6ce8\u3002

\n

\u5982\u679c\u4f60\u4ee5\u524d\u5173\u6ce8\u8fc7\u5e76\u653e\u5f03\u4e86 Meteor \uff0c\u8bf7\u544a\u8bc9\u6211\u4f60\u7684\u7591\u8651\uff0c\u6211\u53ef\u4ee5\u6839\u636e\u5176\u73b0\u72b6 (1.3 \u7248\u672c) \u548c\u5df2\u77e5\u7684\u672a\u6765\u53d1\u5c55\u65b9\u5411\u8fdb\u884c\u56de\u7b54\uff0c\u8ba9\u6211\u4eec\u91cd\u65b0\u8bc4\u4f30\u4e00\u4e0b Meteor \u5230\u5e95\u9002\u4e0d\u9002\u5408\u81ea\u5df1\u7684\u65b0\u9879\u76ee\u3002

\n" }, { "author": { "url": "member/maodouwang", "name": "maodouwang", "avatar": "https://cdn.v2ex.com/gravatar/3d39c719e0f85c31c47ffb6f9f2c2ebd?s=73&d=retro" }, "url": "t/259944", "title": "\u7b2c\u4e00\u5c4a\uff08 2016\uff09\u4e2d\u56fd Meteor \u6280\u672f\u5cf0\u4f1a", "id": "t/259944", "date_published": "2016-02-29T09:05:52+00:00", "content_html": "

\u65f6\u95f4\uff1a 2016 \u5e74 3 \u6708 6 \u65e5 14:00~18:30
\n\u5730\u70b9\uff1a\u6e05\u534e\u5927\u5b66 FIT \u697c\u4e8c\u697c\u591a\u529f\u80fd\u5385
\n\u4e3b\u529e\u65b9\uff1a\u6bdb\u8c46\u7f51\u5728\u7845\u8c37 Meteor \u603b\u90e8\u7684\u7684\u5173\u5207\u548c\u6307\u5bfc\u4e0b\uff0c\u4e3e\u529e 2016 \u5e74\u7b2c\u4e00\u5c4a Meteor \u6280\u672f\u5cf0\u4f1a\uff0c\u66a8\u6bdb\u8c46\u7f51\u5f00\u53d1\u8005\u4ea4\u6d41\u4f1a\u3002
\n\u62a5\u540d\u94fe\u63a5\uff1a http://t.cn/RGMhohc

\n" }, { "author": { "url": "member/ifuture", "name": "ifuture", "avatar": "https://cdn.v2ex.com/avatar/2950/5089/160644_large.png?m=1686134119" }, "url": "t/259253", "date_modified": "2021-10-05T18:29:57+00:00", "content_html": "

meteor \u6846\u67b6\u9002\u5408\u7528\u5728\u4e92\u8054\u7f51\u7c7b\u5e73\u53f0\u5417\uff0c\u6709\u54ea\u4e9b\u6210\u529f\u7684\u6848\u4f8b\u6216\u8005\u5f00\u6e90\u9879\u76ee\u53ef\u4ee5\u5b66\u4e60

\n", "date_published": "2016-02-26T04:00:25+00:00", "title": "meteor \u6846\u67b6\u9002\u5408\u7528\u5728\u4e92\u8054\u7f51\u7c7b\u5e73\u53f0\u5417", "id": "t/259253" }, { "author": { "url": "member/my101du", "name": "my101du", "avatar": "https://cdn.v2ex.com/avatar/cfaa/f68b/30180_large.png?m=1756193491" }, "url": "t/252759", "title": "\u5206\u4eab\uff1a\u6700\u8fd1\u5728\u5b66 Meteor \u7ed3\u5408 React\uff0c\u4f7f\u7528 FlowRouter \u505a\u8def\u7531\u548c react-layout \u5e03\u5c40\uff0c\u4ee5\u53ca Semantic-UI \u754c\u9762", "id": "t/252759", "date_published": "2016-01-22T16:04:31+00:00", "content_html": "

\u4e4b\u524d\u5728\u516c\u53f8\u6253\u6742\u7684\uff0c\u56e0\u4e3a\u505a\u7684\u4e8b\u592a\u6742\uff0c\u6240\u4ee5\u4e0d\u5f97\u4e0d\u7ecf\u5e38\u5b66\u4e00\u4e9b\u4e1c\u897f\uff08\u4f46\u662f\u4e5f\u7231\u597d\uff0c\u5475\u5475\uff09\u3002

\n\n

\u6700\u8fd1\u6709\u4e00\u4e2a\u8feb\u5207\u7684\u538b\u529b\u8ba9\u6211\u5c3d\u5feb\u5b66\u4e60 Meteor \u7ed3\u5408 React \uff08\u4ee5\u53ca\u5176\u4ed6\u76f8\u5173\u524d\u7aef\u7684\u6280\u672f\uff09\uff0c\u8fd9\u5bf9\u4e00\u4e2a\u53ea\u4f1a jQuery \uff0c\u5bf9\u524d\u7aef\u5404\u79cd\u706b\u70ed\u6280\u672f\u53ea\u662f\u521d\u6b65\u4e86\u89e3\u7684\u4eba\u6765\u8bf4\uff0c\u771f\u662f\u6bd4\u8f83\u5927\u7684\u6311\u6218\u2014\u2014\u5305\u62ec\u601d\u7ef4\u4e0a\u7684\u6539\u53d8\u548c\u514b\u670d\u7ecf\u9a8c\u7684\u4e0d\u8db3\u3002

\n\n

\u4e8e\u662f\u767d\u5929\u7ee7\u7eed\u6253\u6742\u642c\u670d\u52a1\u5668\uff0c\u88c5\u7535\u8bdd\u7ebf\u2026\u2026\u665a\u4e0a\u770b\u8d44\u6599\uff0c\u6572\u4ee3\u7801\uff0c\u5e78\u597d\u6709\u9886\u8def\u4eba\u7ed9\u4e86\u4e0d\u5c11\u8d44\u6599\uff0c\u5927\u5927\u51cf\u5c11\u4e86\u5b66\u4e60\u65f6\u95f4\u3002

\n\n

\u6211\u53d1\u73b0\u7f51\u4e0a\u5206\u522b\u8bb2 meteor \u3001 react \u7b49\u7684\u8d44\u6599\u90fd\u633a\u591a\u7684\uff0c\u4f46\u8c8c\u4f3c\u8fd8\u6ca1\u6709\u627e\u5230\u4e00\u7bc7\u4e2d\u6587\u7684\uff0c\u5e76\u4e14\u4e13\u95e8\u8bb2\u5982\u4f55\u628a\u8fd9\u4e9b\u6280\u672f\u7ed3\u5408\u8d77\u6765\u7684\u6587\u7ae0\uff0c\u6240\u4ee5\u5199\u5b8c\u4ee3\u7801\u5c31\u6574\u7406\u4e86\u4e00\u4efd\u6587\u6863\uff0c\u4ee5\u5e2e\u52a9\u548c\u6211\u4e00\u6837\u5165\u95e8\u7684 V \u53cb\u3002

\n\n
\n\n

\u5df2\u7ecf\u4f7f\u7528\u5230\u7684\u6280\u672f\u6e05\u5355

\n\n

Meteor \u57fa\u7840\u5f00\u53d1\u6846\u67b6(\u4ee5\u53ca\u81ea\u5e26\u7684 MongoDB \uff0c accounts-ui,check \u7b49 packages)
\nMeteor-React \u524d\u7aef\u5e93
\nFlowRouter \u5ba2\u6237\u7aef\u8def\u7531
\nreact-layout \u7ed3\u5408 FlowLayout \u5b9e\u73b0 react JSX \u7684\u5e03\u5c40
\nSemantic-UI \u524d\u7aef\u754c\u9762\u5e93
\n\u5176\u4ed6 Meteor \u63d2\u4ef6

\n\n
\n\n

\u5730\u5740\uff1a
\nhttps://github.com/my101du/meteor-react-flowrouter-semantic-singledog

\n\n

\u5b8c\u5168\u662f\u5b66\u4e60\u5165\u95e8\u7684\u6f66\u8349\u5f62\u6001\uff0c\u6ca1\u6709\u8003\u8651\u5230\u4ee3\u7801\u7684\u6574\u6d01\u548c\u201c\u6700\u4f73\u5b9e\u8df5\u201d\uff08\u8fd9\u4e2a\u8bcd\u6211\u4e00\u76f4\u89c9\u5f97\u83ab\u540d\u5176\u5999\uff09\uff0c\u5e76\u4e14 bug \u7e41\u591a\uff0c\u8bf7\u9ad8\u624b\u6307\u51fa\u6211\u53ef\u4ee5\u7ee7\u7eed\u63d0\u9ad8\u7684\u65b9\u5411\u548c\u6280\u5de7\u3002

\n" }, { "author": { "url": "member/ljbha007", "name": "ljbha007", "avatar": "https://cdn.v2ex.com/avatar/1f47/cef5/10823_large.png?m=1368098214" }, "url": "t/218951", "title": "\u73a9 Meteor \u8e29\u8fc7\u7684\u9668\u77f3\u5751\u603b\u7ed3", "id": "t/218951", "date_published": "2015-09-07T12:48:44+00:00", "content_html": "

\u73a9\u4e86\u51e0\u5929 Meteor \u603b\u7ed3\u4e00\u4e0b\u9047\u5230\u8fc7\u7684\u5751
\n\u5982\u679c\u662f\u505a\u6559\u7a0b\u91cc\u7684 Todo \u5e94\u7528\u7684\u786e\u662f\u5f88\u5bb9\u6613 \u4f46\u662f\u5982\u679c\u8981\u505a\u590d\u6742\u4e00\u70b9\u7684\u5e94\u7528\u5751\u5c31\u5f00\u59cb\u591a\u8d77\u6765 \u800c\u4e14\u5f88\u591a\u90fd\u662f\u9668\u77f3\u5751\u7ea7\u522b\u7684

\n\n
    \n
  1. \u6587\u6863\u95f4\u5173\u8054\u652f\u6301\u975e\u5e38\u5dee \u56e0\u4e3a mongoDB \u6ca1\u6709\u539f\u751f\u7684 join \u64cd\u4f5c \u53ea\u80fd\u9760\u81ea\u5df1\u624b\u52a8\u4e8c\u6b21\u67e5\u8be2\u6765\u5173\u8054\u5bf9\u8c61\uff0c\u4f46\u662f\n\uff0d Meteor.publish \u53ea\u652f\u6301\u8fd4\u56de\u6570\u636e\u5e93\u6307\u9488 \u4e0d\u80fd\u8fd4\u56de\u5df2\u7ecf\u67e5\u597d\u7684\u6570\u636e\u96c6\uff08\u4e3a\u4e86\u4f7f\u7528 mongoDB \u7684 tailable cursor \u5b9e\u73b0\u4ece\u6570\u636e\u5e93\u5230\u5e94\u7528\u5c42\u7684\u6570\u636e\u63a8\u9001\uff09\u6240\u4ee5\u5982\u679c\u60f3\u8981\u5728\u670d\u52a1\u5668\u7aef\u76f4\u63a5\u5173\u8054\u53ea\u80fd\u81ea\u5df1\u7528\u5e95\u5c42\u7684 observe \u548c observeChanges \u7684 API \u6765\u91cd\u5199 publish \u65b9\u6cd5 \u975e\u5e38\u590d\u6742\u800c\u4e14\u76f8\u5173\u7684\u6587\u6863\u4e5f\u4e0d\u5168\u9762\n\uff0d \u5982\u679c\u4f7f\u7528\u5ba2\u6237\u7aef Join \u7684\u529e\u6cd5\u4e5f\u4f1a\u6709\u95ee\u9898 \u6bd4\u5982\u67d0\u4e2a document \u4e2d\u6709\u4e2a\u5b57\u6bb5\u662f\u6570\u7ec4 \u6570\u7ec4\u4e2d\u6709\u4e86\u65b0\u7684\u5143\u7d20\u8fdb\u6765 \u9047\u5230\u8fd9\u79cd\u60c5\u51b5 \u5ba2\u6237\u7aef\u76f4\u63a5 join \u7684\u5bf9\u8c61\u5c31\u4f1a\u6536\u4e0d\u5230\u6d88\u606f \u56e0\u4e3a \u6ca1\u6709\u4e3b\u52a8\u53bb subscribe
  2. \n
\n\n

\u89e3\u51b3\u529e\u6cd5\uff1a https://github.com/englue/meteor-publish-composite \u4f7f\u7528\u8fd9\u4e2a\u5305\u53ef\u4ee5\u89e3\u51b3\u670d\u52a1\u5668\u7aef\u7684 join \u903b\u8f91\u590d\u6742\u7684\u95ee\u9898

\n\n

\u5173\u4e8e\u8fd9\u65b9\u9762\u4e00\u4e9b\u76f8\u5173\u7684\u6587\u7ae0\uff1a https://www.discovermeteor.com/blog/reactive-joins-in-meteor/

\n\n
    \n
  1. \u88ab\u5173\u8054\u7684\u6587\u6863\u66f4\u65b0\u65f6\u4e0d\u4f1a\u89e6\u53d1 blaze \u6a21\u7248\u5f15\u64ce\u7684\u91cd\u7ed8 \u56e0\u4e3a join \u4e0a\u53bb\u7684\u6587\u6863\u4e00\u822c\u662f\u76f4\u63a5\u7528\u8d4b\u503c\u7684\u65b9\u5f0f\u9644\u52a0\u5230\u4e3b\u6587\u6863\u4e0a\u7684 blaze \u8bfb\u53d6\u8be5\u503c\u7684\u65f6\u5019\u6ca1\u6709\u89e6\u53d1\u6ce8\u518c\u91cd\u7ed8\u7684\u6ce8\u518c\u673a\u5236 \u6240\u4ee5\u5f53\u8fd9\u4e2a\u6587\u6863\u66f4\u65b0\u65f6\u4e5f\u5c31\u4e0d\u4f1a\u89e6\u53d1\u91cd\u7ed8
  2. \n
\n\n

\u89e3\u51b3\u529e\u6cd5
\n 1.\u7528 Template.<my object>.helpers \u8fd4\u56de\u4e00\u4e2a\u5173\u8054\u6587\u6863\u7684\u6307\u9488 \u8bfb\u53d6\u6307\u9488\u7684\u503c\u65f6\u4f1a\u89e6\u53d1 Meteor \u7684\u91cd\u7ed8\u6ce8\u518c\u673a\u5236 \u6240\u4ee5\u5f53\u88ab\u5173\u8054\u7684\u5bf9\u8c61\u5bf9\u8c61\u66f4\u65b0\u65f6\u5c31\u89e6\u53d1\u4e86\u91cd\u7ed8 \u4f8b\u5982

\n
Template.book.helpers ({\n 'author' : function (){\n return Authors.find (this.authorId );\n }\n });\n
\n" }, { "author": { "url": "member/ljbha007", "name": "ljbha007", "avatar": "https://cdn.v2ex.com/avatar/1f47/cef5/10823_large.png?m=1368098214" }, "url": "t/218189", "title": "\u8bd5\u7528\u4e86\u4e24\u5929 Meteor \u89c9\u5f97\u5f88\u4e0d\u9519", "id": "t/218189", "date_published": "2015-09-04T01:52:49+00:00", "content_html": "\u4e3b\u8981\u4f18\u70b9\r
\r
\uff0d \u5185\u7f6e RPC \u529f\u80fd \u670d\u52a1\u5668\u548c\u5ba2\u6237\u7aef\u4e4b\u95f4\u7684\u4ea4\u63a5\u4ee3\u7801\u53ef\u4ee5\u8282\u7701\u5f88\u591a\r
\r
\uff0d \u672c\u5730\u7684 minimongo \u529f\u80fd\u5f88\u597d\u7528 \u8ba9\u5ba2\u6237\u7aef\u53ea\u9700\u8981\u4e13\u6ce8\u6570\u636e\u7684\u5c55\u793a \u590d\u6742\u7684\u6570\u636e\u540c\u6b65\u903b\u8f91\u90fd\u5df2\u7ecf\u5b9e\u73b0\u5e76\u9690\u85cf\u6389\u4e86\r
\r
\uff0d publish/subscribe \u6a21\u5f0f\u9002\u5408\u505a\u63a8\u9001\u5e94\u7528 \u5f88\u65b9\u4fbf" }, { "author": { "url": "member/Janpo", "name": "Janpo", "avatar": "https://cdn.v2ex.com/avatar/4e87/337f/1862_large.png?m=1495687553" }, "url": "t/217877", "title": "\u7528 Meteor \u505a\u4e86\u4e2a\u7ad9\uff0c\u5927\u5bb6\u53ef\u4ee5\u6765\u51d1\u51d1", "id": "t/217877", "date_published": "2015-09-02T08:18:02+00:00", "content_html": "\u7eaf METEOR \u6253\u9020\uff0c\u8fd8\u5728\u4e0d\u65ad\u5b8c\u5584\u4e2d, \u7f51\u5740\uff1a http://www.icoufen.com" }, { "author": { "url": "member/ljbha007", "name": "ljbha007", "avatar": "https://cdn.v2ex.com/avatar/1f47/cef5/10823_large.png?m=1368098214" }, "url": "t/217557", "title": "\u6709 V \u53cb\u7528 Meteor.js \u505a\u6b63\u5f0f\u7684\u4ea7\u54c1\u5417\uff1f\u8fdb\u6765\u8ba8\u8bba\u4e00\u4e0b \u697c\u4e3b\u662f\u4e2a\u504f\u6267\u72c2", "id": "t/217557", "date_published": "2015-09-01T05:50:00+00:00", "content_html": "

\u6211\u4eec\u516c\u53f8\u4ea7\u54c1\u539f\u8ba1\u5212\u662f\u7528 Java \u540e\u53f0 + Ionic \u505a
\n\u4f46\u662f\u540e\u6765\u53d1\u73b0 Java \u5f00\u53d1\u6548\u7387\u786e\u5b9e\u4e0d\u5982\u52a8\u6001\u8bed\u8a00 \u867d\u7136\u8fd8\u662f\u53ef\u4ee5\u63a5\u53d7\u7684\u8303\u56f4\u5185 \u4f46\u662f\u627e\u5230\u7684\u7a0b\u5e8f\u5458\u6c34\u5e73\u53c2\u5dee\u4e0d\u9f50\uff08\u6c34\u5e73\u4e0d\u597d\u7684\u90a3\u4e2a\u4ee3\u7801\u770b\u7740\u7b80\u76f4\u5413\u4eba\uff09

\n\n

\u670b\u53cb\u63a8\u8350\u4e86 Meteor.js \u6211\u4e5f\u7a0d\u5fae\u7814\u7a76\u4e86\u4e00\u4e0b \u770b\u4f3c\u5f88\u7f8e\u597d \u4f46\u662f\u4e0d\u77e5\u9053\u5b9e\u9645\u5f00\u53d1\u7684\u65f6\u5019\u4f1a\u4e0d\u4f1a\u9047\u5230\u4ec0\u4e48\u95ee\u9898\uff1f
\n\u6bd4\u5982

\n\n

\uff0d \u540e\u53f0\u81ea\u5b9a\u4e49\u4e1a\u52a1\u903b\u8f91\u662f\u5426\u4f1a\u5f88\u56f0\u96be\uff1f
\n \u6211\u4ee5\u524d\u4e5f\u9047\u5230\u8fc7\u50cf Django cakePHP \u8fd9\u6837\u7684\u6846\u67b6 \u867d\u7136\u529f\u80fd\u5f88\u5b8c\u5584 \u53ef\u4ee5\u91cd\u590d\u5229\u7528\u7684\u6a21\u5757\u5f88\u591a \u4f46\u662f\u6709\u4e9b\u6a21\u5757\u81ea\u5b9a\u4e49\u5f00\u53d1\u592a\u590d\u6742 \u751a\u81f3\u590d\u6742\u5230\u4e0d\u5982\u81ea\u5df1\u91cd\u65b0\u5199\u7684\u7a0b\u5ea6

\n\n

\uff0d \u662f\u5426\u9047\u5230\u660e\u663e\u7684\u6548\u7387\u95ee\u9898\uff1f\u80fd\u5426\u5e94\u5bf9\u624b\u673a\u591a\u53d8\u7684\u7f51\u7edc\u73af\u5883\uff1f
\n Metero.js \u91cc\u7684 live query \u867d\u7136\u5f88\u597d\u7528 \u4f46\u662f\u6bd5\u7adf\u9700\u8981\u957f\u65f6\u95f4\u4fdd\u6301\u8fde\u63a5 \u4e00\u4e2a\u662f\u5982\u679c\u662f\u624b\u673a\u4f7f\u7528 \u6570\u636e\u6d41\u91cf\u4f1a\u4e0d\u4f1a\u592a\u5927\uff1f \u8fd8\u6709\u4e00\u4e2a\u662f\u8fd9\u6837\u5927\u91cf\u7684\u4ea4\u6362\u6570\u636e\u4f1a\u4e0d\u4f1a\u5bfc\u81f4\u7535\u91cf\u6d88\u8017\u8fc7\u5feb\uff1f \u5982\u679c\u662f\u79fb\u52a8\u7f51\u7edc\u8fd9\u79cd\u7ecf\u5e38\u6389\u7ebf\u3001\u4e0d\u7a33\u5b9a\u7684\u73af\u5883 \u6709\u6ca1\u6709\u9047\u5230\u4ec0\u4e48\u5947\u602a\u7684\u95ee\u9898\uff1f

\n\n

\uff0d \u670d\u52a1\u5668\u7684\u6027\u80fd\u5f00\u9500\u6a2a\u5411\u5bf9\u6bd4\u7684\u7ed3\u679c\u5982\u4f55\uff1f
\n \u56e0\u4e3a\u9700\u8981\u7ef4\u6301\u5927\u91cf\u5ba2\u6237\u7aef\u7684 WebSocket \u4f1a\u4e0d\u4f1a\u5bfc\u81f4\u670d\u52a1\u5668\u7684\u5185\u5b58\u548c CPU \u7684\u5f00\u9500\u592a\u5927\uff1f

\n\n

\u697c\u4e3b\u6b63\u5728\u4e25\u8083\u8003\u8651\u8981\u4e0d\u8981\u5206\u914d\u4e00\u70b9\u5f00\u53d1\u65f6\u95f4\u51fa\u6765\u7528 meteor.js \u505a\u4e00\u4e2a\u5feb\u901f\u539f\u578b \u6240\u4ee5\u5982\u679c\u6709 V \u6709\u5728\u6b63\u5f0f\u4ea7\u54c1\u5f00\u53d1\u4e2d\u7528\u8fc7 meteor.js \u8bf7\u4e0d\u541d\u8d50\u6559 \u6216\u8005\u52a0\u6211 qq \u4ea4\u6d41\u4ea4\u6d41 523823374

\n" }, { "author": { "url": "member/zicai", "name": "zicai", "avatar": "https://cdn.v2ex.com/avatar/bcdf/5f27/50383_large.png?m=1404702487" }, "url": "t/193774", "title": "Meteor \u4e2d\u6587\u793e\u533a\u4e0a\u7ebf\u5566\uff01\uff01", "id": "t/193774", "date_published": "2015-05-26T03:55:28+00:00", "content_html": "

Meteor \u4e2d\u6587\u793e\u533aMeteorHub\u4e0a\u7ebf\u5566\uff01\uff01\uff01

\n\n

\u540c\u5b66\u4eec\u53ef\u4ee5\u5728\u4e0a\u9762\u5206\u4eabMeteor\u7ecf\u9a8c\uff0c\u6216\u662f\u4f7f\u7528Meteor\u8fc7\u7a0b\u4e2d\u9047\u5230\u4e86\u56f0\u96be\uff0c\u4e0d\u7528\u6015\uff0c\u53ef\u4ee5\u5230\u793e\u533a\u5bfb\u6c42\u5e2e\u52a9

\n" }, { "author": { "url": "member/binarymann", "name": "binarymann", "avatar": "https://cdn.v2ex.com/avatar/0048/81eb/12223_large.png?m=1425720587" }, "url": "t/182700", "title": "\u8bf7\u95ee meteor build \u51fa\u6765\u7684 iOS app \u80fd\u591f\u76f4\u63a5\u53d1\u5e03\u5230 Appstore \u5417\uff1f", "id": "t/182700", "date_published": "2015-04-09T16:13:14+00:00", "content_html": "\u4e0d\u77e5\u9053\u8fd9\u7c7b\u7eafhtml/css/js\u7684App\u80fd\u591f\u901a\u8fc7\u5ba1\u67e5\u7684\u53ef\u80fd\u6027\u5927\u4e0d\uff0c\u4e0d\u8fc7meteor\u7684\u786e\u592a\u8d5e\u4e86" }, { "author": { "url": "member/tamamaxox", "name": "tamamaxox", "avatar": "https://cdn.v2ex.com/avatar/3377/4f2e/17802_large.png?m=1400124739" }, "url": "t/159437", "title": "linux \u4e0b\u9762\u4f7f\u7528 meteor build \u4e0d\u52a0 --debug \u53c2\u6570\u7684\u8bdd\u65e0\u6cd5\u751f\u6210\u51fa bundle\u3002", "id": "t/159437", "date_published": "2015-01-05T09:35:14+00:00", "content_html": "\u8fd9\u4e2a\u4ec0\u4e48\u56de\u4e8b\uff0c\u6709\u5f97\u7834\u5417\uff1f\u8bf7\u6c42\u771f\u5fc3\u591a" }, { "author": { "url": "member/lin", "name": "lin", "avatar": "https://cdn.v2ex.com/avatar/fe9f/c289/83_large.png?m=1773678072" }, "url": "t/149712", "title": "CNAME \u5230 origin.meteor.com \u7684\u7f51\u7ad9\u65e0\u6cd5\u8bbf\u95ee\u600e\u4e48\u7834\uff1f", "id": "t/149712", "date_published": "2014-11-27T07:56:01+00:00", "content_html": "\u5e94\u8be5\u662f\u88ab\u5899\u4e86\u3002
\u6709\u6ca1\u6709\u7834\u89e3\u7684\u65b9\u6cd5\u6bd4\u5982\u53cd\u5411\u4ee3\u7406\uff1f

\u8c22\u8c22\uff01" }, { "author": { "url": "member/Kai", "name": "Kai", "avatar": "https://cdn.v2ex.com/avatar/021b/bc7e/1024_large.png?m=1657391813" }, "url": "t/142310", "title": "Meteor 1.0", "id": "t/142310", "date_published": "2014-10-29T03:12:17+00:00", "content_html": "https://www.meteor.com/" }, { "author": { "url": "member/laosb", "name": "laosb", "avatar": "https://cdn.v2ex.com/gravatar/49fc92f18dc48d2e5fc0caee2503f931?s=73&d=retro" }, "url": "t/141573", "title": "\u662f\u4e0d\u662f\u5e94\u8be5\u6210\u7acb\u4e00\u4e2a MeteorChina \u793e\u533a\u5462\uff1f\u56e0\u4e3a\u6211\u53d1\u73b0\u8fde\u4e00\u4efd\u6700\u65b0\u7248\u7684 Doc \u7ffb\u8bd1\u90fd\u6ca1\u6709\u3002", "id": "t/141573", "date_published": "2014-10-26T03:27:05+00:00", "content_html": "" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/141475", "title": "\u5f88\u597d\u5947 Meteorpedia \u8fd9\u4e2a wiki \u662f\u7528\u4ec0\u4e48\u8f6f\u4ef6\u9a71\u52a8\u7684\uff1f", "id": "t/141475", "date_published": "2014-10-25T09:08:14+00:00", "content_html": "http://www.meteorpedia.com/read/Main_Page

\u5f88\u559c\u6b22\u8fd9\u4e2a\u8bbe\u8ba1\u3002" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/139895", "date_modified": "2014-10-18T14:00:43+00:00", "content_html": "

\u53bb\u5e74\u5728\u4e00\u4e2ahackthorn\u4e0a\u505a\u4e86\u4e00\u4e2a \u53ef\u4ee5\u591a\u4eba\u5b9e\u65f6\u6f14\u594f\u97f3\u4e50\u7684\u5c0f\u4f5c\u54c1\u3002

\n\n

\u540e\u6765\u4e00\u76f4\u60f3\u7528meteor\u91cd\u65b0\u5199\u4e00\u904d\uff0c\u4e00\u76f4\u5728\u62d6\u5ef6\uff0c\u7ed3\u679c\u8fd9\u6b21\u8d76\u5728 MeteorDay \u4e4b\u524d\u7ec8\u4e8e\u662f\u505a\u51fa\u6765\u4e86\u3002

\n\n

\u4f46\u662f\u7531\u4e8e\u7f51\u7edc\u5ef6\u8fdf\u548c\u7b97\u6cd5\u4e0d\u591f\u597d\uff0c\u76ee\u524d\u7684\u5b9e\u9645\u7684\u6548\u679c\u8fd8\u5f88\u5dee\u3002\u4e4b\u540e\u4f1a\u770b\u770b profile \u4e13\u653b\u4e00\u4e0b\u6027\u80fd\u4f18\u5316\u3002

\n\n

Demo\u5730\u5740

\n\n

\u5982\u679c\u6253\u4e0d\u5f00\u53ef\u80fd\u662f\u56e0\u4e3a Google web Fonts \u88ab\u5899\u6ca1\u52a0\u8f7d\u51fa\u6765\uff0c\u70b9\u51fb\u4e00\u4e0besc\u5c31\u597d\u3002

\n\n

\u6309\u7167\u60ef\u4f8b\u7ee7\u7eed \u516c\u5f00\u4ee3\u7801

\n", "date_published": "2014-10-18T14:00:09+00:00", "title": "Band ~ Let`s play music together", "id": "t/139895" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/139342", "date_modified": "2014-10-16T10:10:43+00:00", "content_html": "

MeteorDay

\n\n

meteor.js \u79bb 1.0 \u8d8a\u6765\u8d8a\u8fd1\u4e86\uff0c11\u67086\u53f7\u5168\u7403\u5404\u5730\u90fd\u4f1a\u4e3e\u884c\u7684\u6d3b\u52a8\uff0c\u548c hangout \u3002

\n\n

http://meteorday.com/

\n\n

\u4e4b\u524d\u7684 0.9 \u7248\u672c\u63d0\u4f9b\u4e86\u5b98\u65b9\u7684\u5305\u7ba1\u7406\u673a\u5236\uff0c1.0 \u5c06\u5f88\u53ef\u80fd\u62e5\u6709\u4e0b\u9762 roadmap \u91cc\u627f\u8bfa\u7684\u529f\u80fd\u3002

\n\n

roadmap

\n\n

\u53ef\u53c2\u4e0e

\n\n

\u4e2d\u56fd\u90e8\u5206\u6709\u5317\u4eac\u548c\u9999\u6e2f

\n\n

\u6211\u4f1a\u53bb\u5317\u4eac\u7684\u6d3b\u52a8\uff0c\u7ec4\u7ec7\u8005\u8fd8\u5728\u627e\u573a\u5730\u3002\u6309\u5df2\u5f80\u7684\u7ecf\u9a8c\u770b\u53c2\u4e0e\u4eba\u6570\u5e94\u8be5\u4e0d\u4f1a\u8d85\u8fc750\u4eba\uff0c\u5e0c\u671b\u5927\u5bb6\u80fd\u6709\u63a8\u8350\u3002

\n", "date_published": "2014-10-16T10:09:37+00:00", "title": "MeteorDay", "id": "t/139342" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/128381", "title": "Kadira", "id": "t/128381", "date_published": "2014-08-17T07:37:05+00:00", "content_html": "\u7528\u4e8e Meteor app \u7684\u6027\u80fd\u76d1\u63a7\u5de5\u5177\uff1a

https://kadira.io/" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/124186", "title": "\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7248\u7684 slack", "id": "t/124186", "date_published": "2014-07-23T15:29:07+00:00", "content_html": "\u8d77\u540d\u662f Sora \uff0c\u610f\u601d\u662f\u5929\u7a7a\uff0c\u5927\u5bb6\u4e0d\u8981\u60f3\u6b6a\u4e86\u3002

\u5730\u5740\u662f http://sora.meteor.com

\u5229\u7528meteor\u7684\u5b9e\u65f6\u7279\u6027\uff0c\u5f00\u53d1\u8fd9\u79cd\u534f\u4f5c\u5de5\u5177\u786e\u5b9e\u5f88\u65b9\u4fbf\u3002

\u6211\u7b2c\u4e00\u6b21\u5728\u9879\u76ee\u91cc\u7528\u4e86\u4e09\u4e2a mrt \u7684\u63d2\u4ef6\uff1a
iron-router\uff1a \u7528\u6765\u505a\u8def\u7531
gravatar: Gravatar\u5934\u50cf
user-status: \u7528\u6237\u5728\u7ebf\u72b6\u6001
\u90fd\u7b97\u662f\u5373\u63d2\u5373\u7528\u5427\u3002

\u5f53\u7136\u8fd9\u4e2a\u5c0f\u4e1c\u897f\u529f\u80fd\u5f88\u7b80\u5355\uff0c\u800c\u4e14\u5927\u5bb6\u90fd\u5728\u540c\u4e00\u4e2a\u201c\u5e7f\u573a\u201d\uff0c\u4e5f\u5c31\u662f\u8bf4\u4e00\u4e2a\u90e8\u7f72\u53ea\u652f\u6301\u4e00\u4e2ateam\u3002
\u6240\u4ee5\u8fd9\u91cc\u6700\u591a\u53ea\u80fd\u88c5\u4e0b20\u4eba\u5427\uff0c\u518d\u591a\u6211\u4e5f\u6ca1\u8bd5\u8fc7\uff0c\u6240\u4ee5\uff0c\u6211\u968f\u65f6\u53ef\u80fd\u4f1a\u91cd\u7f6e\u6570\u636e\u5e93\u3002

\u4e0d\u8fc7\u6ca1\u5173\u7cfb\uff0c\u81ea\u5df1\u90e8\u7f72\u4e00\u4e2aSora\u5176\u5b9e\u4e5f\u4e0d\u96be\uff0c\u53ea\u9700\u8981\u5b89\u88c5\u4e0b npm \u548c meteor \u5728\u53bb\u770b\u770b\u6587\u6863\u5c31\u53ef\u4ee5\u4e86\u3002
\u4ee3\u7801\u5728 http://github.com/loddit/sora


\u6700\u540e\u5e2e\u670b\u53cb\u505a\u4e2a\u5e7f\u544a\uff0c\u5317\u4eac\u7684meteor\u7ebf\u4e0b\u805a\u4f1a\uff0c\u76ee\u524d\u65f6\u95f4\u672a\u5b9a\uff0c\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u5148\u5173\u6ce8\u3002 http://www.meetup.com/Meteor-Beijing/events/166521512/" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/119942", "title": "2014 Meteor Challenge \u8fd8\u5269\u4f59 2 \u5929", "id": "t/119942", "date_published": "2014-06-28T02:03:20+00:00", "content_html": "http://challenge.meteor.com/

\u76ee\u524dMeteor\u56e2\u961f\u5408\u4f5c\u5728\u641e\u4e00\u4e2a\u7b79\u6b3e\u6d3b\u52a8\uff0c\u53ea\u8981\u4f60\u53bb github \u4e0a\u6536\u85cf\u4e86 meteor \u7684 repo \uff08github.com/meteor/meteor\uff09\uff0c\u5c31\u4f1a\u6709 5$ \u6350\u51fa\u505a\u4e3a\u6559\u80b2\u5b69\u5b50\u5b66\u7f16\u7a0b\u7684\u7ecf\u8d39\u3002

\u5982\u679c\u4f60\u8ba4\u540c\u4ed6\u4eec\u7684\u505a\u6cd5\uff0c\u4e0d\u59a8\u652f\u6301\u4e00\u4e0b\u3002" }, { "author": { "url": "member/laskuma", "name": "laskuma", "avatar": "https://cdn.v2ex.com/avatar/c7aa/9528/17847_large.png?m=1775744190" }, "url": "t/100732", "title": "\u56fd\u5185\u6709\u591a\u5c11 Meteor \u5f00\u53d1\u8005\uff1f", "id": "t/100732", "date_published": "2014-02-18T06:00:10+00:00", "content_html": "\u603b\u89c9\u5f97\u6709\u79cd\u53eb\u597d\u4e0d\u53eb\u5ea7\u7684\u611f\u89c9\u3002\u4eca\u5929\u52a8\u624b\u60f3\u7ed9\u5b89\u5353\u5ba2\u6237\u7aef\u5199\u4e2a\u767b\u5f55API\uff0c\u53d1\u73b0Server\u4e0d\u5177\u6709\u68c0\u6d4b\u7528\u6237\u5408\u6cd5\u6027\u7684\u529f\u80fd\u3002stackoverflow\u4e0a\u95ee\u4e86\u4e0b\uff0c\u5f97\u81ea\u5df1\u8bfb\u4ee3\u7801\u5199package\u4e86\u3002" }, { "author": { "url": "member/koon_kai", "name": "koon_kai", "avatar": "https://cdn.v2ex.com/avatar/e6c7/ae6b/18328_large.png?m=1741924732" }, "url": "t/93408", "date_modified": "2013-12-16T12:22:21+00:00", "content_html": "\u6700\u8fd1\u5728\u5b66\u4e60Meteor\u8fd9\u4e2a\u6846\u67b6\uff0c\u628a\u300aDiscover Meteor\u300b\u8fd9\u672c\u4e66\u91cc\u9762\u7684\u4f8b\u5b50microscope\u62ff\u6765\u5c0f\u6539\u4e86\u4e00\u4e0b\uff0c
\u505a\u4e86\u4e00\u4e2a\u53ebMeteor News\u7684\u5c0f\u7ad9\uff08\u7c7b\u4f3cHacker News\uff09\u3002

\u76ee\u7684\u662f\u8ba9\u7528\u6237\u63d0\u4ea4\u5173\u4e8eMeteor\u7684\u8d44\u6599\u3001\u6559\u7a0b\u548c\u65b0\u95fb\u7b49.

MeteorNews: [http://news.cmeteor.org/](http://news.cmeteor.org/)

\u6b22\u8fce\u5410\u69fd\u548c\u5efa\u8bae\u3002", "date_published": "2013-12-16T12:20:53+00:00", "title": "Meteor News", "id": "t/93408" }, { "author": { "url": "member/rvmedtech", "name": "rvmedtech", "avatar": "https://cdn.v2ex.com/avatar/5da9/cf96/46757_large.png?m=1392640942" }, "url": "t/85859", "title": "\u6280\u672f\u9009\u578b\u4f7f\u7528meteor\u7684\u521b\u4e1a\u516c\u53f8", "id": "t/85859", "date_published": "2013-10-17T03:54:17+00:00", "content_html": "\u516c\u53f8\u521a\u521a\u6210\u7acb\uff0c\u6025\u9700\u5f00\u53d1\u4eba\u5458\uff0c\u5927\u5bb6\u6709\u5174\u8da3\u5417\uff1f\u5730\u70b9\u5728\u5e7f\u5dde\u3002

\u62db\u8058\u8d34\uff1ahttp://www.v2ex.com/t/85506" }, { "author": { "url": "member/crapthings", "name": "crapthings", "avatar": "https://cdn.v2ex.com/gravatar/ffbed556c373d95be74c2b2daf7ac09d?s=73&d=retro" }, "url": "t/82859", "date_modified": "2013-09-17T18:06:50+00:00", "content_html": "\u533f\u540d\u4fe1\u606f\u7248

www.abcdefuckyou.com

\u652f\u6301markdown", "date_published": "2013-09-17T17:17:38+00:00", "title": "meteor.js \u533f\u540d\u4fe1\u606f\u677f", "id": "t/82859" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/67385", "title": "Telescope", "id": "t/67385", "date_published": "2013-04-30T08:26:19+00:00", "content_html": "\u4e00\u4e2a\u7528 Meteor \u505a\u7684\u5f00\u6e90\u7c7b Reddit \u7a0b\u5e8f\uff1a

http://telesc.pe/

\u6f14\u793a\uff1a

http://demo.telesc.pe/" }, { "author": { "url": "member/yakczh", "name": "yakczh", "avatar": "https://cdn.v2ex.com/avatar/6f32/49aa/31337_large.png?m=1422287290" }, "url": "t/65008", "title": "meteor 6.0\u6709\u4ec0\u4e48\u65b0\u53d8\u5316\u5417?", "id": "t/65008", "date_published": "2013-04-05T05:36:44+00:00", "content_html": "New version available: 0.6.0
downloading [=============================] 100%... finished download

Meteor has a brand new distribution system!

In this new system, code-named Engine, packages are downloaded
individually and on demand. But all of the packages in each official
Meteor release are prefetched and cached so you can still use Meteor
when you're on a plane or in a coffeeshop with no Wifi.

Also, every Meteor project is now pinned to a specific Meteor release,
so everyone on your team is always running the same code regardless of
what they have installed on their laptop. Whenever you run 'meteor',
Engine automatically fetches the needed release manifest, build tools,
smart packages, and npm dependencies into your local warehouse.

Removing your current installation.

Downloading Engine upgrade
######################################################################## 100.0%

Installing Meteor in your home directory (~/.meteor):
* 'meteor' build tool
* Package updates: absolute-url accounts-base accounts-facebook
account-github accounts-google accounts-oauth1-helper accounts-oauth2-helper
accounts-oauth-helper accounts-password accounts-twitter accounts-ui
accounts-ui-unstyled accounts-urls account-weibo amplify autopublish
backbone bootstrap code-prettify coffeescript d3 deps domutils ejson email
force-ssl handlebars htmljs http insecure jquery jquery-history
jquery-layout jquery-waypoints json jsparse less livedata liverange
localstorage-polyfill logging madewith meteor minimongo mongo-livedata
ordered-dict past preserve-inputs random reload routepolicy session showdown
spark spiderable srp startup stream stylus templating test-helpers
test-in-browser tinytest underscore universal-events

Writing a launcher script to /usr/local/bin/meteor for your convenience.
**************************************************************
*** Meteor is now installed at /usr/local/bin/meteor. ***
*** Run `hash -r` so that your shell notices it has moved. ***
**************************************************************
demo: updated to Meteor 0.6.0.

-- Notice --

0.6.0: Variables declared with `var` at the outermost level of a Javascript
source file are now private to that file. Remove the `var` to share
a value between files." }, { "author": { "url": "member/weiyongqing123", "name": "weiyongqing123", "avatar": "https://cdn.v2ex.com/gravatar/8341059515e9e257bbb8da3c9fc158c2?s=73&d=retro" }, "url": "t/56060", "title": "meteor\u7684google\u4e2d\u6587\u8bba\u575b\u5730\u5740\uff0c\u5927\u5bb6\u8fdb\u8bba\u575b\u4ea4\u6d41\u5566", "id": "t/56060", "date_published": "2012-12-28T04:52:52+00:00", "content_html": "https://groups.google.com/forum/?fromgroups#!forum/cn-meteor-js

\u7fa4\u53f7\uff1a256195986

\u559c\u6b22meteor\uff0c\u90a3\u5c31\u5171\u540c\u4ea4\u6d41" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/54850", "title": "\u4e00\u4e2a\u4fee\u6539 Essay \u7684\u5c0f\u5de5\u5177", "id": "t/54850", "date_published": "2012-12-13T14:46:18+00:00", "content_html": "\u4eca\u5929\u6211\u5728\u5199\u4e00\u5c01\u82f1\u6587\u90ae\u4ef6\uff0c\u56e0\u4e3a\u6211\u82f1\u8bed\u5f88\u5dee\uff0c\u5199\u5b8c\u4ee5\u540e\uff0c\u628a\u90ae\u4ef6\u53d1\u7ed9\u4e86\u4e00\u4e2a\u82f1\u6587\u8001\u5e08\u8ba9\u4ed6\u5e2e\u5fd9\u4fee\u6539\u3002\u4ed6\u4fee\u6539\u5b8c\u6210\u540e\uff0c\u518d\u56de\u590d\u7ed9\u6211\u3002\u8fd9\u91cc\u9762\u7684\u95ee\u9898\u662f\uff0c\u6211\u5f88\u96be\u770b\u51fa\u4ed6\u4fee\u6539\u4e86\u54ea\u513f\u3002
\u6240\u4ee5\u6211\u505a\u4e86\u8fd9\u4e2a\u5de5\u5177\u3002
\u8fd9\u4e2a\u5de5\u5177\u6284\u88ad\u4e86 notepad.cc \u7684\u60f3\u6cd5\u548c\u6837\u5f0f\uff0c\u533a\u522b\u662f\uff0c\u5199\u597d\u7684 Essay \u53ef\u4ee5\u53d1\u7ed9\u522b\u4eba\u5ba1\u9605\uff0c\u5ba1\u9605\u7684\u7ed3\u679c\u53ef\u4ee5\u5373\u65f6\u770b\u5230\uff0c\u4e0d\u7528\u65b0\u5efa\uff0c\u4e0d\u7528\u4fdd\u5b58\uff0csimple is better.

http://42.121.54.125:3000/" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/54772", "title": "Meteor \u5f00\u59cb\u7ed9 contributor \u53d1 T-shirt \u4e86\uff0c\u5927\u5bb6\u6709\u6536\u5230\u90ae\u4ef6\u5417\uff1f", "id": "t/54772", "date_published": "2012-12-12T23:45:24+00:00", "content_html": "\u51cc\u66685\u70b9\u6536\u5230\u6765\u81ea Meteor \u7684\u90ae\u4ef6\uff0c\u4e0d\u6562\u76f8\u4fe1\u662f\u771f\u7684\uff0c\u6211\u521a\u521a\u5728 twitter \u4e0a\u95ee\u4e86\uff0c\u8fd8\u6ca1\u6709\u56de\u590d\uff0c\u6709\u5176\u4ed6\u4eba\u6536\u5230\u90ae\u4ef6\u5417\uff1f

Hi Chuangbo,

We're really happy to have you as a Meteor contributor and we'd like
to send our thanks. Can you let me know your T-shirt size, and the
name/address where we can send you some things? Also, if you'd like to have
an extra shirt for a friend or collaborator, let me know that too. We
have both men's and women's sizes.

Thanks so much!

Kristy Hilands
Meteor Development Group" }, { "author": { "url": "member/xieren58", "name": "xieren58", "avatar": "https://cdn.v2ex.com/avatar/6abf/efaf/29855_large.png?m=1634018623" }, "url": "t/54696", "title": "Meteor\u6709\u4e2a\u5f88\u5927\u7684\u95ee\u9898", "id": "t/54696", "date_published": "2012-12-12T03:10:12+00:00", "content_html": "\u5982\u679cMeteor \u524d\u7aef\u8ba2\u9605\u4e86\u540e\u7aefdb\u6570\u636e\uff0c\u5982\u679c\u662f\u5168\u90e8db\u6570\u636e\u63a8\u9001\u8fc7\u6765\uff0c\u5c31\u4f1a\u5f88\u6162\uff0c\u5982\u679c\u6570\u636e\u5c11\u5c31\u5f88\u5feb~~

\u5982\u679c\u5206\u9875\u5728\u540e\u7aef\uff0c \u90a3\u5c31\u6ca1\u6cd5\u5f97\u5230 \u603b\u9875\u6570\uff0c \u53ea\u80fd\u662f \u90a3\u79cd\u70b9\u51fb\u3000load more \u7684\u65b9\u5f0f\u4e86\u6765\u52a0\u8f7d\u6570\u636e\u4e86~~" }, { "author": { "url": "member/lin", "name": "lin", "avatar": "https://cdn.v2ex.com/avatar/fe9f/c289/83_large.png?m=1773678072" }, "url": "t/54674", "title": "\u6211\u7528Meteor\u548cTelescope\u642d\u7684\u4e00\u4e2aJavascript\u5206\u4eab\u7f51\u7ad9", "id": "t/54674", "date_published": "2012-12-11T15:59:03+00:00", "content_html": "http://dot-js.com/
Javascript News. Libraries & Tutorials for Javascript developers.

\u8fd9\u662f\u67d0\u4e2a\u5468\u672b\u7684\u8bd5\u9a8c\u54c1\u3002
\u4f5c\u4e3a\u5c0f\u767d\uff0c\u540c\u6837\u662f\u62ff\u5f00\u6e90\u4ee3\u7801\u4fee\u4fee\u6539\u6539\uff0c\u6162\u6162\u518d\u5b8c\u5584\u5427\u3002

\u53e6\u5916\u53d1\u73b0\u81ea\u5df1\u5199\u7684js\u4e0d\u80fd\u8f93\u51fa\u76f8\u5e94\u5185\u5bb9\uff0c
\u7136\u540e\u95ee\u4eba\u624d\u77e5\u9053\u89e3\u51b3\u7684\u7ebf\u7d22\uff0c
\u4e0b\u6b21\u66f4\u65b0\u5982\u679c\u6210\u529f\u540e\u518d\u5199\u70b9\u4ec0\u4e48\uff0c\u4e0d\u5982\u642d\u5efa\u5b83\u7684\u4e00\u4e9b\u7ecf\u9a8c\u3002" }, { "author": { "url": "member/meteor2013", "name": "meteor2013", "avatar": "https://cdn.v2ex.com/avatar/e9b0/9450/30450_large.png?m=1355010412" }, "url": "t/54521", "title": "\u521d\u5b66Meteor\u7684\u51e0\u4e2a\u8ba8\u8bba", "id": "t/54521", "date_published": "2012-12-10T02:49:10+00:00", "content_html": "1. \u670d\u52a1\u5668\u4e0a\u7684\u4ee3\u7801\u4e5f\u662fjs\u7684\u8bdd\uff0c\u6211\u8fd8\u662f\u5f88\u62c5\u5fc3\u5b89\u5168\u6027
A. \u670d\u52a1\u5668\u4e0a\u7684js\u4f1a\u88ab\u770b\u5230\u3002
B. \u670d\u52a1\u5668\u4e0a\u7684js\u4f1a\u88ab\u4e0b\u8f7d\u3002

2. \u5f00\u53d1\u5468\u671f
\u771f\u7684\u8c61\u8bf4\u7684\u90a3\u4e48\u8282\u7701\u65f6\u95f4\u5417\uff1f \u6bd4\u5982\u5f00\u53d1\u4e00\u4e2a\u7c7b\u4f3cProject Babel\u7684\u4e1c\u897f\u3002\u9009ROR\u6216\u8005cakephp\u5f00\u53d1\u5feb\u5462\uff0c\u8fd8\u662f\u9009Meteor\u5feb\uff1f

3. \u6027\u80fd
\u5141\u8bb8\u901f\u5ea6\u6bd4rails\u7684\u90a3\u4e9b\u6846\u67b6\uff0c\u6216\u8005php\u7684\u90a3\u4e9b\u6846\u67b6\u9ad8\u5417\uff1f

4. \u6570\u636e\u5e93
\u76ee\u524d\u53ea\u6709mongodb\u53ef\u4ee5\u7528\u3002\u6709\u6ca1\u6709\u8c61phpMyAdmin\u8fd9\u6837\u7684\u53ef\u89c6\u5316\u5de5\u5177\u5462\uff1f

5. \u4ee3\u7801\u600e\u4e48\u5b89\u6392\u6bd4\u8f83\u6e05\u6670\uff1f
\u5b98\u65b9\u4f8b\u5b50\u4e2d\uff0capp\u76ee\u5f55\u91cc\u7684\u5185\u5bb9\uff0c\u4f1a\u53d1\u73b0html\uff0ccss\uff0cjs\u90fd\u653e\u5728\u540c\u4e00\u76ee\u5f55\u4e0b\u3002\u6709\u4e9b\u662f\u5efa\u4e86\u4e00\u4e2aserver\u548cclient\u76ee\u5f55\u6765\u533a\u5206\uff0c\u4e0d\u8fc7\u8fd8\u662f\u611f\u89c9\u6709\u4e9b\u4e71\u3002
\u6709\u6ca1\u4e00\u4e2a\u7edf\u4e00\u7684\uff0c\u6bd4\u8f83\u6e05\u6670\u7684\u683c\u5f0f\u53ef\u4ee5\u53c2\u8003\uff1f

6. \u76ee\u524d\u8fd8\u662fbeta\u9636\u6bb5\u3002 \u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u771f\u6b63\u7684\u6bd4\u8f83\u7b80\u5355\u7684\u4ea7\u54c1\u5417\uff1f
\u7b49\u6210\u719f\u7684\u51fa\u6765\u4e86\uff0c\u518d\u5347\u7ea7\u4e0a\u53bb\uff0c\u4f1a\u4e0d\u4f1a\u5f88\u9ebb\u70e6\uff1f

\u8c22\u8c22\u3002" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/54491", "title": "\u5168\u56fd\u94c1\u8def\u6570\u636e\u7684\u53ef\u89c6\u5316app", "id": "t/54491", "date_published": "2012-12-09T10:55:45+00:00", "content_html": "\u5176\u5b9e\u6ca1\u600e\u4e48\u5229\u7528 meteor \u7684\u7279\u6027\u4e86\uff0c\u5b8c\u5168\u662f\u51b2\u7740 meteor \u6709 d3 \u652f\u6301\u548c\u90e8\u7f72\u7a7a\u95f4\u7684\u5149\u3002

\u5730\u5740\u5728 http://goo.gl/JJpsG (\u8ba1\u7b97\u91cf\u6bd4\u8f83\u5927\uff0ccpu\u4e0d\u884c\u7684\u7535\u8111\u614e\u70b9)

\u8fd9\u4e2a\u662f\u6211\u7528\u6765\u7ec3\u4e60 nodejs \u6293\u53d6\uff0c\u548c\u7528 d3 \u505a\u6570\u636e\u53ef\u89c6\u5316\u7684\u5c0f\u4f5c\u54c1\u3002
\u4ece\u51e0\u4e2a\u7f51\u7ad9\u4e0a(\u6bd4\u5982 trainby.com)\u6293\u4e0b\u4e86\u8f66\u6b21\u4fe1\u606f\uff0c\u518d\u7528 google \u7684 geocoder API \u83b7\u53d6\u5730\u5740\u5750\u6807\u89e3\u6790\u51fa\u6765\u3002\u4f46\u662f\u7ed3\u679c\u90fd\u6709\u4e0d\u51c6\u786e\u7684\u5730\u65b9\uff08\u6574\u4f53\u9519\u8bef\u7387\u4e0d\u8d85\u8fc7 1% \u5427 \u6240\u4ee5\u8fd8\u597d\uff09\uff0c\u53cd\u5e94\u5728\u56fe\u4e0a\u5c31\u662f\u51e0\u4e2a\u83ab\u540d\u5947\u5999\u7684\u70b9\u548c\u7ebf\u8def\u3002

todo:
1 \u589e\u52a0\u7684\u5730\u70b9\u7684hover\u6548\u679c\uff0c\u663e\u793a\u5730\u540d\u4ec0\u4e48\u7684(\u7528\u5e38\u7528\u7684\u65b9\u6cd5\u6bd4\u5982title\uff0cbootstrap \u7684 tooltips \u90fd\u4e0d\u8d77\u4f5c\u7528\u4e86\uff0c\u8fd8\u9700\u8981\u7814\u7a76\u4e0b\u600e\u4e48\u56de\u4e8b)
2 \u589e\u52a0\u5217\u8f66\u7c7b\u578b\u7684\u533a\u5206\u3002
3 \u4fee\u590d\u9519\u8bef\u6570\u636e\u811a\u672c\uff0c\u5e76\u5b9a\u671f\u66f4\u65b0\u51c6\u786e\u6570\u636e(\u54ce\uff0c\u8981\u662f\u8fd9\u79cd\u5f00\u653e\u6570\u636e\u6709\u4e2a\u670d\u52a1\u80fd\u63d0\u4f9b\u66f4\u53cb\u597d\u7684 API \u5c31\u597d\u4e86\uff09" }, { "author": { "url": "member/meteor2013", "name": "meteor2013", "avatar": "https://cdn.v2ex.com/avatar/e9b0/9450/30450_large.png?m=1355010412" }, "url": "t/54464", "title": "\u8bf7\u95ee\u5982\u4f55\u5b89\u88c5 meteorite\uff08atmosphere \u7684 package\uff09 \uff1f", "id": "t/54464", "date_published": "2012-12-09T03:11:52+00:00", "content_html": "~~~
npm install -g meteorite
~~~
\u4e3a\u4ec0\u4e48\u4e0d\u5de5\u4f5c\u554a\uff1f

\u8c22\u8c22" }, { "author": { "url": "member/meteor2013", "name": "meteor2013", "avatar": "https://cdn.v2ex.com/avatar/e9b0/9450/30450_large.png?m=1355010412" }, "url": "t/54462", "title": "meteor\u662f\u4e2a\u597d\u4e1c\u897f\uff0c\u4f46\u662f\u6d4f\u89c8\u5668\u53ef\u4ee5\u76f4\u63a5\u6539\u6570\u636e\u7684\u95ee\u9898\u600e\u4e48\u89e3\u51b3\u554a\uff1f", "id": "t/54462", "date_published": "2012-12-08T23:41:47+00:00", "content_html": "\u6709\u4ec0\u4e48\u5177\u4f53\u7684\u529e\u6cd5\u554a\uff1f" }, { "author": { "url": "member/loddit", "name": "loddit", "avatar": "https://cdn.v2ex.com/avatar/c2be/0c8f/13134_large.png?m=1338089649" }, "url": "t/52950", "title": "Meteor 0.5.1 \u53d1\u5e03", "id": "t/52950", "date_published": "2012-11-21T03:32:55+00:00", "content_html": "\u535a\u5ba2\u5728 => http://meteor.com/blog/2012/11/20/meteor-051-database-scaling

\u91cc\u9762\u53d1\u73b0\u4e86\u4ed6\u4eec\u5728 Trello \u516c\u5f00\u7684\u8def\u7ebf\u56fe => http://roadmap.meteor.com

\u611f\u89c9\u6bcf\u6b21\u66f4\u65b0\u7684\u5185\u5bb9\u8fd8\u86ee\u591a\u7684\uff0c\u76ee\u524d\u770b\u771f\u662f\u751f\u547d\u529b\u5f88\u5f3a\u7684\u9879\u76ee\uff0c\u4e0d\u77e5\u9053\u4f7f\u7528\u7740\u5df2\u7ecf\u6709\u591a\u5c11\u4e86?


\u6458\u90e8\u4efd\u66f4\u65b0\u90ae\u4ef6\u7684\u5185\u5bb9\uff1a

Here's the highlights in 0.5.1:

Meteor's realtime Mongo driver now allows multiple clients to share the results of identical database queries, dramatically reducing database query load for many applications. More details below.

We wrote a more sophisticated latency compensation algorithm on the client. For a full description of this change, see David's blog post.

On the client, a method's completion callback now runs after the method's mutations are fully in the client database. The previous behavior of running as soon as the server returns the method's result is still available. See http://docs.meteor.com/#meteor_apply.

We improved the transition between logged-out and logged-in database states, replaced Meteor.userLoaded with Meteor.loggingIn, and made a few other minor changes to the Accounts APIs." }, { "author": { "url": "member/lin", "name": "lin", "avatar": "https://cdn.v2ex.com/avatar/fe9f/c289/83_large.png?m=1773678072" }, "url": "t/52207", "title": "Meteor-BBS\u53ef\u6709\u5220\u5e16\u3001\u6539\u5e16\u3001\u79fb\u5e16\u7b49\u529f\u80fd\uff1f", "id": "t/52207", "date_published": "2012-11-09T07:53:26+00:00", "content_html": "@chuangbo @yonggao" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/50271", "title": "Meteor 0.5.0: \u6570\u636e\u5e93\u6743\u9650\u63a7\u5236\u3001\u8d26\u6237\u7cfb\u7edf\u548c\u65b0\u7684\u89c6\u9891\u6559\u7a0b", "id": "t/50271", "date_published": "2012-10-18T01:31:43+00:00", "content_html": "http://meteor.com/blog/2012/10/18/meteor-050-authentication-user-accounts-new-screencast
\u89e3\u51b3\u4e86\u6570\u636e\u5e93\u95ee\u9898\u4ee5\u540e\uff0c\u7ec8\u4e8e\u8fbe\u5230\u57fa\u672c\u7684 production ready \u4e86\u3002\u8d26\u6237\u7cfb\u7edf\u7684 API \u5c01\u88c5\u7a0b\u5ea6\u975e\u5e38\u9ad8\uff0c\u751a\u81f3\u5305\u62ec\u4e86\u91cd\u8bbe\u5bc6\u7801\u7b49\u903b\u8f91\u3002" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/50210", "title": "Meteor-BBS v0.2 \u53d1\u5e03\uff0c\u652f\u6301 QQ \u767b\u5f55\u548c\u7b80\u5355\u7684\u6743\u9650\u63a7\u5236\u4e86", "id": "t/50210", "date_published": "2012-10-17T05:33:50+00:00", "content_html": "\u8fd9\u662f\u4e00\u4efd\u5bf9 Project Babel 3 \u7684\u514b\u9686\uff0c\u7528 Meteor \u5199\u6210\u3002
DEMO: https://meteor-bbs.meteor.com
github: https://github.com/chuangbo/meteor-bbs
QQ\u767b\u5f55\u548c\u6743\u9650\u63a7\u5236\u662f @yonggao \u53d1\u8d77\u7684 pull request\uff0c\u611f\u8c22\uff01

\u76f8\u5173\u8ba8\u8bba
1. /t/48084 \u7528 Meteor \u514b\u9686\u4e86\u4e00\u4e2a\u5b9e\u65f6\u7684 V2EX
2. \u65e7 Demo \u5730\u5740 https://dnspod-bbs.meteor.com
3. \u7406\u8bba\u4e0a\u8fd8\u652f\u6301 Github/Google/Twitter/\u65b0\u6d6a\u5fae\u535a/Facebook http://auth-docs.meteor.com/#meteor_loginwithexternalservice" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/50194", "title": "Secure Remote Password protocol", "id": "t/50194", "date_published": "2012-10-17T02:54:27+00:00", "content_html": "http://en.wikipedia.org/wiki/Secure_Remote_Password_protocol
Meteor \u91c7\u7528\u7684\u4f20\u8f93\u5bc6\u7801\u7684\u65b9\u5f0f
http://auth-docs.meteor.com/#meteor_loginwithpassword" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/48354", "title": "Installer & smart package manager for Meteor - Meteorite", "id": "t/48354", "date_published": "2012-09-20T16:52:15+00:00", "content_html": "\u9879\u76ee\u5730\u5740 http://oortcloud.github.com/meteorite/
\u8fd9\u662f\u5305\u7d22\u5f15 https://atmosphere.meteor.com/


\u6ca1\u60f3\u5230\u5bf9\u4e8e\u4e00\u4e2a\u8fd8\u5728 preview \u7684\u5e93\uff0c\u53ea\u770b Release \u7684\u6587\u6863\u4e5f\u4f1a\u9519\u8fc7\u5f88\u591a\u6d3b\u8dc3\u7684\u4e1c\u897f\uff0c\u4f5c\u8005\u4eec\u8fd8\u662f\u633a\u4fdd\u5b88\u7684\u3002" }, { "author": { "url": "member/chuangbo", "name": "chuangbo", "avatar": "https://cdn.v2ex.com/avatar/f5de/aeea/584_large.png?m=1677808727" }, "url": "t/48084", "date_modified": "2012-09-19T10:45:21+00:00", "content_html": "\u6211\u5f88\u559c\u6b22 V2EX\uff0c\u4e00\u76f4\u60f3\u5728\u56e2\u961f\u5185\u90e8\u642d\u5efa\u4e00\u4e2a\uff0c\u65b9\u4fbf\u79ef\u7d2f\u77e5\u8bc6\uff0c\u4f46\u662f @Livid \u8fdf\u8fdf\u4e0d\u5f00\u6e90 PB3\uff0c\u4e5f\u56e0\u4e3a\u7a0b\u5e8f\u5458\u6742\u5fd7\u7684\u4e00\u7bc7\u7ea6\u7a3f\uff0c\u6211\u7ee7\u7eed\u5b9e\u8df5 Meteor\uff0c\u5c71\u5be8\u4e86 V2EX \u7684\u4e00\u5c0f\u90e8\u5206\u529f\u80fd\u3002

\u53ea\u5b9e\u73b0\u4e86\u8282\u70b9\u3001\u4e3b\u9898\u3001\u56de\u590d\u529f\u80fd\uff0c\u552f\u4e00\u7684\u6539\u52a8\u5c31\u662f\u652f\u6301\u4e86\u5355\u4e3b\u9898\u591a\u8282\u70b9\uff08\u611f\u8c22 Mongodb\uff09\uff0c\u5f53\u7136\u8fd8\u6709\u5b9e\u65f6\uff08\u611f\u8c22 Meteor

\u56e0\u4e3a\u662f\u6211\u4eec\u5185\u90e8\u4f7f\u7528\u7684\uff0c\u6ca1\u6709\u5b9e\u73b0\u5e10\u53f7\u7cfb\u7edf\uff0c\u53ea\u80fd\u7528 DNSPod \u5e10\u53f7\u767b\u5f55\u3002

\u76f8\u6bd4\u4e0a\u6b21\u7684\u5206\u4eab\u7684\u662f\uff0cMeteor \u4fee\u590d\u4e86\u4e0d\u5c11 Bug\uff0c\u5199\u8d77\u6765\u4e0d\u9700\u8981\u90a3\u4e48\u591a Hack \u4e86\uff0c\u4f46\u662f\u4f9d\u7136\u5b58\u5728\u8bb8\u591a\u95ee\u9898\uff0c\u6bd4\u5982\u5237\u65b0\u5076\u5c14\u975e\u5e38\u6162\uff0c\u6570\u636e\u5f88\u4e45\u90fd\u8f7d\u5165\u4e0d\u51fa\u6765\uff0c\u4f46\u662f\u5220\u6389\u53f3\u4fa7\u680f\u5c31\u597d\u4e86\u3002\u3002

\u5927\u5bb6\u611f\u5174\u8da3\u53ef\u4ee5\u8bd5\u8bd5\uff0c\u6709\u4efb\u4f55\u5173\u4e8e Meteor \u7684\u95ee\u9898\u6211\u90fd\u5f88\u4e50\u610f\u4e0e\u5927\u5bb6\u8ba8\u8bba\u3002

http://dnspod-bbs.meteor.com/t/cf0737d1-e4b6-4409-8c30-c4c595f9f235

\u6700\u540e\uff0c\u611f\u8c22 @Livid \u548c\u4ed6\u7684 V2EX\uff01\uff01\uff01\uff01", "date_published": "2012-09-19T10:42:48+00:00", "title": "\u7528 Meteor \u514b\u9686\u4e86\u4e00\u4e2a\u5b9e\u65f6\u7684 V2EX", "id": "t/48084" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86