nutui.js 2.0 KB

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