使用jsx语法

通过配置babel,spritejs可以使用jsx语法

JSBin

  1. const {Group, Path, Scene, Sprite} = spritejs
  2. const scene = new Scene('#demo-quickStart', {
  3. viewport: ['auto', 'auto'],
  4. resolution: [800, 800],
  5. })
  6. const layer = scene.layer();
  7. const group =
  8. <Group
  9. size={[300, 300]}
  10. pos={[400, 400]}
  11. anchor={[0.5, 0.5]}>
  12. {
  13. [...Array(6).keys()].map( i => <Path path={{
  14. d: 'M0 0L 50 0A50 50 0 0 1 43.3 25z',
  15. transform: {scale: 3, rotate: -15},
  16. trim: true,
  17. }}
  18. pos={[150, 150]}
  19. anchor={[0, 0.5]}
  20. strokeColor='red'
  21. fillColor={`rgb(${i * 139 % 255}, 0, 0)`}
  22. rotate = {i * 60}></Path> )
  23. }
  24. </Group>
  25. layer.append(group);
  26. group.animate([
  27. {rotate: 0},
  28. {rotate: 360},
  29. ], {
  30. duration: 3000,
  31. iterations: Infinity,
  32. })

这一段代码完全等价于分组 Group中的示例代码。

配置babel

spritejs提供了用于babel的preset,在配置babel前首先应确保babel-preset-spritejsx已经被安装到本地node_modules,推荐同时将其加入devDependency:

  1. npm install --save-dev babel-preset-spritejsx

在.babelrc文件中添加spritejsx这一preset即可:

  1. {
  2. "presets": ["spritejsx"]
  3. }

根据babel文档,也可以用命令行来调用:

  1. babel --presets spritejsx input.js > output.js

更多参考

JSX格式的详细定义,可参考facebook的官方文档

https://facebook.github.io/jsx/