nutui.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // import 'babel-polyfill';
  2. import { version,packages } from '../config.json';
  3. const components = {};
  4. const methods = {};
  5. const filters = {};
  6. const directives = {};
  7. packages.map(item=>{
  8. const pkg = require('./package/' + item.name.toLowerCase() + '/index.js').default;
  9. if (!pkg) return;
  10. if (item.type =='component'){
  11. if (pkg.name) {
  12. components[item.name] = pkg;
  13. } else {
  14. for (let n in pkg) {
  15. components[n] = pkg[n];
  16. }
  17. }
  18. } else if (item.type == 'method'){
  19. methods[item.name] = pkg;
  20. } else if (item.type == 'filter') {
  21. filters[item.name] = pkg;
  22. } else if (item.type == 'directive') {
  23. directives[item.name] = pkg;
  24. }
  25. });
  26. const install = function(Vue, opts = {}) {
  27. if (install.installed) return;
  28. for (let cptName in methods){
  29. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
  30. }
  31. for (let cptName in components) {
  32. if (components[cptName] && components[cptName].name) {
  33. Vue.component(components[cptName].name, components[cptName]);
  34. }
  35. }
  36. for (let cptName in filters) {
  37. if (filters[cptName] && filters[cptName].name) {
  38. Vue.filter(cptName, filters[cptName]);
  39. }
  40. }
  41. for (let cptName in directives) {
  42. if (directives[cptName] && directives[cptName].name) {
  43. Vue.directive(directives[cptName].name, directives[cptName]);
  44. }
  45. }
  46. /* Vue.prototype.$dialog = components['Dialog'];
  47. Vue.prototype.$toast = components['Toast'];
  48. Vue.prototype.$loading = components['Loading']; */
  49. };
  50. if (typeof window !== 'undefined' && window.Vue) {
  51. install(window.Vue);
  52. }
  53. const API = Object.assign({
  54. version: version,
  55. install
  56. },components,filters,directives,methods);
  57. export default API;