摘要

CocosCreator 已经拥抱 ES6 语法,你还在使用 ES5 吗?今天 KUOKUO 为你带来导出模块的各种姿势!

正文

原写法

模块化使你可以在 CocosCreator 中引用其它脚本文件:

  • 访问其它文件导出的参数

  • 调用其它文件导出的方法

  • 使用其它文件导出的类型

那么一般的写法是

  1. // data.js

  2.  

  3. var data = {

  4. name: 'kuokuo',

  5. age: 21,

  6. sayHello: function() {

  7. console.log('Hello');

  8. }

  9. }

  10.  

  11. module.exports = data;

导入

  1. // main.js

  2.  

  3. var data = require('data');

  4. cc.Class({

  5. extends: cc.Component,

  6.  

  7. properties: {

  8. },

  9.  

  10. onLoad () {

  11. console.log(data.name, data.age); // kuokuo 21

  12. data.sayHello(); // Hello

  13. },

  14.  

  15. });

ES6写法

上述写法换成 ES6 的即为

  1. // data.js

  2.  

  3. let data = {

  4. name: 'kuokuo',

  5. age: 21,

  6. sayHello: function() {

  7. console.log('Hello');

  8. }

  9. }

  10.  

  11. export default data;

导入

  1. // main.js

  2.  

  3. import data from"./data";

  4. cc.Class({

  5. extends: cc.Component,

  6.  

  7. properties: {

  8. },

  9.  

  10. onLoad () {

  11. console.log(data.name, data.age); // kuokuo 21

  12. data.sayHello(); // Hello

  13. },

  14. });

而且有了 import 后,代码提示就会出来,极大的提高了开发效率。

各种姿势

姿势一
  1. exports.num = 1;

  2.  

  3. exports.add = (a, b) => {

  4. return a + b;

  5. }

  6.  

  7. exports.dog = class{

  8. constructor () {

  9. console.log('new');

  10. }

  11. }

导入

  1. import{ num, add, dog } from"./data";

  2.  

  3. cc.Class({

  4. extends: cc.Component,

  5.  

  6. properties: {

  7. },

  8.  

  9. onLoad () {

  10. console.log(num); // 1

  11. console.log(add(1, 2)); // 3

  12. let k = new dog(); // new

  13. },

  14.  

  15. });

姿势二
  1. exportlet num = 1;

  2.  

  3. export let add1 = (a, b) => {

  4. return a + b;

  5. }

  6.  

  7. function add2 (a, b) {

  8. return a + b;

  9. }

  10. export{ add2 };

  11.  

  12. export class dog {

  13. constructor () {

  14. console.log('new');

  15. }

  16. }

导入

  1. import{ num, add1, add2, dog } from"./data";

  2.  

  3. cc.Class({

  4. extends: cc.Component,

  5.  

  6. properties: {

  7. },

  8.  

  9. onLoad () {

  10. console.log(num); // 1

  11. console.log(add1(1, 1)); // 2

  12. console.log(add2(1, 2)); // 3

  13. let k = new dog(); // new

  14. },

  15.  

  16. });

姿势三

为模块重命名

  1. export function aFunc (a, b) {

  2. return a + b;

  3. }

as 关键字
  1. import{ aFunc as add } from"./data";

  2. cc.Class({

  3. extends: cc.Component,

  4.  

  5. properties: {

  6. },

  7.  

  8. onLoad () {

  9. console.log(add(1, 1)); // 2

  10. },

  11.  

  12. });

姿势四
export 与 import 的复合写法
  1. // dog.js

  2.  

  3. export class dog {

  4.  

  5. constructor () {

  6. console.log('dog 初始化');

  7. }

  8.  

  9. sayHello () {

  10. console.log('Hello!');

  11. }

  12.  

  13. }

  1. // data.js

  2.  

  3. export function aFunc (a, b) {

  4. return a + b;

  5. }

  6.  

  7. export{ dog } from"./dog";

这样只需要导入 data 一个模块
  1. import{ aFunc as add , dog} from"./data";

  2. cc.Class({

  3. extends: cc.Component,

  4.  

  5. properties: {

  6. },

  7.  

  8. onLoad () {

  9. console.log(add(1, 1)); // 2

  10. let k = new dog(); // dog 初始化

  11. k.sayHello(); // Hello!

  12. },

  13.  

  14. });

结语

小伙伴们掌握了吗?