meteor 加载静态文件

meteor 加载外部资源文件

在不少时候开发的时候咱们须要导入一些外部的数据到程序当中,这些数据可能存放在csv,XML.json之类的文件当中,咱们就将其导入到程序当中,使其可以供全局进行访问。git

private/json/city.jsonjson

[
  {"code":"010","city":"北京", "pinyin": "beijing"},
  {"code":"021","city":"上海", "pinyin":"shanghai"},
  {"code":"0571","city":"杭州", "pinyin":"hangzhou","province": "浙江"},
  {"code":"0574","city":"宁波", "pinyin":"ningbo","province": "浙江"},
  {"code":"0573","city":"嘉兴", "pinyin":"jiaxing","province": "浙江"},
  {"code":"0575","city":"绍兴", "pinyin":"shaoxing","province": "浙江"},
  {"code":"0577","city":"温州", "pinyin":"wenzhou","province": "浙江"},
  {"code":"0580","city":"舟山", "pinyin":"zhoushan","province": "浙江"},
  {"code":"0572","city":"湖州", "pinyin":"huzhou","province": "浙江"},
  {"code":"0579","city":"金华", "pinyin":"jinhua","province": "浙江"},
  {"code":"0578","city":"丽水", "pinyin":"lishui","province": "浙江"},
  {"code":"0576","city":"台州", "pinyin":"taizhou","province": "浙江"},
  {"code":"0570","city":"衢州", "pinyin":"quzhou","province": "浙江"},
  ]

特殊注意是private文件夹的数据是不提供给客户端api

上面的是包含城市名称以及区号的json数据,咱们将其保存在文件当中,这里咱们能够经过Assets API来访问以及处理相应的数据。ecmascript

server/main.jsui

import { Meteor } from 'meteor/meteor';

Meteor.startup(function(){
  var cityList=JSON.parse(Assets.getText('json/city.json'))
  _.each(cityList, function(city) {
    console.log(city);
  });
})

上面的代码会将全部的数据进行输出,可是有的时候这些数据能够会被其余的项目须要,这里咱们须要经过添加一个package来解决,同时咱们只能够将这个包上传到atmospherejs 咱们须要将以前的json文件移到cityjson包,最终的目录文件以下所示this

└── cityjson
    ├── README.md
    ├── city.json
    ├── cityjson-tests.js
    ├── cityjson.js
    └── package.js

package.jscode

Package.describe({
  name: 'wenchangshou:cityjson',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: '获取国内的全部的城市名称以及区号',
  // URL to the Git repository containing the source code for this package.
  git: '',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Package.onUse(function (api) {
  //  api.versionsFrom('1.4.2.7');
  api.versionsFrom('1.0')
  api.export('cityList', 'server');
  api.addAssets('city.json', 'server')
  api.addFiles('cityjson.js', 'server')
});


Package.onTest(function(api) {
  api.use('ecmascript');
  api.use('tinytest');
  api.use('wenchangshou:cityjson');
  api.mainModule('cityjson-tests.js');
});

cityjson.jsserver

var cityCollection=JSON.parse(Assets.getText('city.json'));
cityList={city:cityCollection}
  • Assets.getText 能够从当前的包内进行调用 ,经过addFiles进行数据的暴露
  • 以后咱们须要读取以及解析数据,city里面包含了全部的城市信息,而且咱们经过cityList这个全局变量进行数据的暴露
  • 咱们经过 api.addAssets将静态的文件导入到包中,经过Assets.getText进行访问

meteor 包上传

上面的操做咱们已经建立了一个可以使用的包了,这时候咱们须要将这个包上传,方便未来的使用ip

meteor publish --createci

上传成功以后咱们能够直接访问cityjson来查看咱们上传的包,以下图所示 ![屏幕快照 2017-02-18 下午5.37.22](http://o7ez1faxc.bkt.clouddn.com/2017-02-18-屏幕快照 2017-02-18 下午5.37.22.png)

上传成功以后咱们将pckages/cityjson目录删除

rm -rf packages/cityjson

咱们在主目录当中添加咱们上传的包,其中wenchangshou是个人用户名

meteor add wenchangshou:cityjson

相关文章
相关标签/搜索