Meteor+Vue 从入门到放弃

前一段时间忙完公司的项目开始闲下来,打算自己写个todolist什么的小应用,然后就跑去调研了一下nodejs环境下有那些比较好的框架写后端服务,本打算用 express + sequelize 写restful风格API的,可惜没找到更方便的工具快速制作,然后就遇到meteor。

meteor

meteor比起express还是使用restful规范的服务端来得更先进,用起来更舒服。

简单使用,只需要在服务端定义 发布 数据,在客户 订阅 的数据并能获得,当然这是归功于基于 DDP 协议的socket服务。

总结一下特点:

  1. 服务端与客户端编码风格一致(全TM是javascript)
  2. 极具实时性(数据基于websocket,模板可以动态加载)
  3. 集成了开源工具和框架(webpack、vue随意使用)

快速上手教程

教程坚持使用vue和webpack,所以这里有个问题,怎么才能跟meteor很好地结合一起呢?

答案:使用在meteor安装webpack支持! 尤大的证言

先学基础,不喜欢的跳过也可以。

meteor基础教程传送门

快速开始

请git clone以下

https://github.com/lpreterite/meteor-vue-webpack-example

运行只需

$ npm i
$ meteor

下文要讲的是,那些东西事必须的,比如在package.json这段:

# 设置的客户端与服务端入口文件

"main": "src/server.js",
"browser": "src/client.js",

webpack.config.js需要指定 root 和热更新设置 devServer

"root": "./src",
  "devServer":{
    "host": "localhost",
    "hot": true,
    "inline": true,
  },

定义你的数据对象

# collections.js

export const Tasks = new Mongo.Collection('tasks')
export const Tags = new Mongo.Collection('tags')

发布

# publications.js

import {Meteor} from 'meteor/meteor';
import {Tasks} from './collections';

Meteor.publish('tasks', function() {
    return Tasks.find();
});

提供数据操作

# methods.js

import {Meteor} from 'meteor/meteor';
import {Tasks, Tags} from './collections';

Meteor.methods({
    'tasks.complete': function(_id, complete){
        Tasks.update({_id: _id}, {
            $set: {
                complete: complete,
                updateAt: new Date()
            }
        })
    },
    'tasks.create': function(title){
        check(title, String);
        let _id = Tasks.insert({
            title,
            createAt: new Date()
        })

        return _id
    },
    'tasks.remove': function(_id){
        check(_id, String);
        Tasks.remove(_id);
    }
})

在客户端取得数据,和操作数据

# index.vue

    import {Meteor} from 'meteor/meteor';
    import {Tasks} from 'server/collections';
    export default{
        data(){
            return{
                tasks: [],
                taskTitle: ""
            }
        },
        methods: {
            create(){
                Meteor.call('tasks.create', this.taskTitle, function(err, _id){
                    if(err){
                        alert('出错了')
                        console.error(err)
                    } else {
                        this.taskTitle = "";
                    }
                }.bind(this))
            },
            remove(task){
                Meteor.call('tasks.remove', task._id)
            }
        },
        route: {
            activate: function(){
                //订阅tasks数据
                this.subscription = Meteor.subscribe('tasks');
            },
            data: function(transition){
                Tracker.autorun(function () {
                    //取得数据
                    this.tasks = Tasks.find().fetch()
                }.bind(this))
            },
            deactivate: function(){
                //取消订阅tasks数据
                this.subscription.shop()
            }
        }
    }

使用docker部署meteor

使用 daocloud平台 (目前还是免费试用)前需要添加docker配置。

具体配置看例子的 .docker 目录和 Dockerfile

逐步使用daocloud平台发布meteor应用

  1. 登录daocloud平台并创建一份代码构建,选择你的仓库(支持github、coding、私有gitlab等),其他默认,点击开始创建。
  2. 页面自动进入构建代码,等待一段时间后会显示构建成功。
  3. 点击镜像仓库并部署应用,逐步完成至见到 环境变量 设置,键入 ROOT_URL=http://localhost:80 、 PORT=80 、 MONGO_URL=Mongo服务地址 ,然后部署。

mongo访问地址,参考一下公式:

MONGO_URL = MONGODB_USERNAME:MONGODB_PASSWORD@MONGODB_PORT_27017_TCP_ADDR:27017/MONGODB_INSTANCE_NAME

具体指南

自定义部署meteor

服务器包含: nodejs 、 git 、 mongodb

$ curl https://install.meteor.com/ | sh #安装meteor
$ npm install -g demeteorizer #安装demeteorizer
$ npm install #安装nodejs依赖的包
$ meteor #先保证应用是可以执行运行的
$ demeteorizer #打包(构建nodejs可用)代码
$ cd .demeteorized/bundle/programs/server
$ npm install
$ cd ../../
$ MONGO_URL=mongodb://localhost:27017/test PORT=80 ROOT_URL=http://localhost:80 node main.js

具体指南

值得注意的是用了webpack:webpack的meteor应用部署环境nodejs版本必须0.12.x以上,npm版本必须3.x以上

时间: 2025-01-20 15:33:51

Meteor+Vue 从入门到放弃的相关文章

CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括使用方式,及相关介绍,都容易引人误解. 为此,我打算重新写个系列来介绍最新的版本,让大伙从传统的ORM编程过渡到自动化框架型思维编程(自已造的词). 于是:这个新系列的名称就叫:CYQ.Data 从入门到放弃ORM系列 什么是:CYQ.Data 1:它是一个ORM框架. 2:它是一个数据层组件. 3

自动化测试,从入门到放弃

介绍 有多少本书,在打着"从入门到精通"的旗号在忽悠人.因为,并没有看到我们周围有多少个"精通"的人. 虽然有点武断,我还是建议不要去购买带有"从入门到精通"字样的技术书籍.这只是出书的人希望能通过那些想在学习上投机取巧的人获得更多的经济收入而已.反而,实际情况中,很多人都在走--从入门到放弃的路子. 面试宝典.某某技术宝典等等,犹如"葵花宝典"一样害人不浅:当你看完之后,就会发现书上的东西都在网络上能找到类似的资料,甚至要比

vue.js入门教程之基础语法小结_javascript技巧

前言 Vue.js是一个数据驱动的web界面库.Vue.js只聚焦于视图层,可以很容易的和其他库整合.代码压缩后只有24kb. 以下代码是Vue.js最简单的例子, 当 input 中的内容变化时,p 节点的内容会跟着变化. <!-- html --> <div id="demo"> <p>{{message}}</p> <input v-model="message"> </div> new

vue.js入门教程之计算属性_javascript技巧

前言 计算属性是用来声明式的描述一个值依赖了其它的值.当你在模板里把数据绑定到一个计算属性上时,Vue 会在其依赖的任何值导致该计算属性改变时更新 DOM.这个功能非常强大,它可以让你的代码更加声明式.数据驱动并且易于维护. 模板中表达式非常便利,但是它们实际上只用于简单的操作. 模板是为了描述视图的结构,在模板中放入太多的逻辑会让模板过重且难以维护. 这就是为什么 Vue.js 将绑定表达式限制为一个表达式, 如果需要多于一个表达式的逻辑,应当使用计算属性. 来看这一个简单的例子 <div i

vue.js入门(3)——详解组件通信_javascript技巧

本文介绍vue.js组件,具体如下: 5.2 组件通信 尽管子组件可以用this.$parent访问它的父组件及其父链上任意的实例,不过子组件应当避免直接依赖父组件的数据,尽量显式地使用 props 传递数据.另外,在子组件中修改父组件的状态是非常糟糕的做法,因为: 1.这让父组件与子组件紧密地耦合: 2.只看父组件,很难理解父组件的状态.因为它可能被任意子组件修改!理想情况下,只有组件自己能修改它的状态. 每个Vue实例都是一个事件触发器: $on()--监听事件. $emit()--把事件沿

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的分析,探索OkHttp这个框架的使用和封装 一.追其原理 Android系统提供了两种HTTP通信类 HttpURLConnection HttpClient Google推荐使用HttpURLConnection,这个没必要多说,事实上,我这篇写的应该算是比较晚了,很多优秀的博文都已经提出了这些观

vue.js 入门精要

废话不多说,直接上干货 vue的核心:修改数据(model),html节点就会自动更新 (1)绑定数据: Js代码   var vm;           var count=1;           $(function () {               vm=new Vue({                   el: '#demo',                   data: {                       message: 'Hello World!',  

拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高级主题 两大部分,以 Python 2.x 作为主要演示版本,涵盖的知识面广,知识点较齐全,代码多且好理解,但对 Python 版本特性的内容太久远,不合时宜. 整体来说 Python 核心 部分是主要内容,高级主题 部分作为应用扩展内容.后半部分篇幅较短,内容不够深入,只到了解的层面,好在横向够广(每一个主

Kotlin从入门到“放弃”(一)

Google2017年I/O大会圆满结束了,在此次大会上谷歌爸爸把未来的重点移到了人工智能上,继续主推自家的TensorFlow,对Android开发者来说唯一的一个惊喜就是Kotlin这门语言成为了官方承认的开发语言(当然我们不能忘了Android O).特意开了一个Kotlin的坑,记录自己学习的历程. 1.Kotlin简介      Kotlin是JetBrains公司开发,基于JVM的一种语言,官网说可以百分百兼容Java语言,它能够进行服务器端,Android端和web前端(兼容Jav