文档目录

前提

  • EOS开发环境
  • Node 4.3.2+

安装

下载项目

  • 克隆devops Git项目 git clone [email protected]:devops10/devops.git
  • cd 到devops-fe-core目录下 执行
    npm install
    

设置环境变量

设置用户环境变量EOS_WEB_ROOT, 值为EOS 服务器web根目录,如tomcat的webapps

  • Mac
# MacOS/Linux
export EOS_WEB_ROOT=/Users/jinxinxi/Work/eos/eosbps75/apache-tomcat-7.0.54/webapps

# Windows
# 临时有效
set EOS_WEB_ROOT=D:\primeton\platform\apache-tomcat-7.0.54\webapps
# 永久有效则配置系统环境变量

使用

配置pages.config.js

devops-fe-core/pages.config.js 是前端页面的统一配置文件,产品上线前需要统一配置。但开发期间开发人员可以在自己的项目的WEB目录下复制一份pages.config.js,方便本地开发调试。 示例: devops-sample/eos-web/pages.config.js
注意: 自己项目下的pages.config.js 仅供开发调试使用,请不要提交

var pages = [{
  id: "portal", // 一级页面标示符
  urlPath: "portal", // 浏览器路由地址,  localhost:8080/default/index.html/#/portal
  page: "sample/pages/portal/index.html", // HTML文件目录,相对于webcontent的路径,如:devops-sample/com.primeton.devops.sample/src/webcontent/pages/portal/index.html, 注意别忘了加构建包的webPath
  root: true // 如果设置root为true, 该页面默认为首页
}, {
  id: "signup",
  urlPath: "signup",
  page: "sample/pages/portal/signup.html"
}, {
  id: "home",
  urlPath: "home",
  pages: [{
    id: "form", // 二级页面标示符
    urlPath: "form", // 浏览器路由地址,,  localhost:8080/default/index.html/#/home/form
    page: "sample/pages/home/form/index.html",  // HTML文件路径,相对于webcontent的路径,如devops-sample/com.primeton.devops.sample/src/webcontent/pages/home/form/index.html, 注意别忘了加构建包的webPath
    sidebarName: "Form", //二级目录名
    sidebarIcon: "assets/images/home/product.svg" // 二级目录icon路径
  }, {
    id: "grid",
    urlPath: "grid",
    name: "Grid",
    icon: "assets/images/home/ziyuan.svg",
    pages: [{
      id: "gridBasic", // 三级页面标示符
      urlPath: "basic", // 浏览器路由地址,,  localhost:8080/default/index.html/#/home/grid/basic
      page: "sample/pages/home/grid/index.html",  // HTML文件路径,相对于webcontent的路径,如devops-sample/com.primeton.devops.sample/src/webcontent/pages/home/grid/index.html, 注意别忘了加构建包的webPath
      name: "Grid", //三级目录名
      icon: "assets/images/home/ziyuan.svg" // 三级目录icon路径
    }, {
      id: "gridI",
      urlPath: "iframe",
      page: "sample/pages/home/grid/DataBinding.html",
      name: "Grid in Iframe",
      icon: "assets/images/home/ziyuan.svg"
    }]

  }]
}]
var config = {
  pages: pages
}
module.exports = config

页面编写

传统的HTML/CSS/JavaScript的代码开发

  • 按如上配置,创建常规的html文件
  • 以传统的html元素做页面布局
  • 内联/外联CSS做样式
  • 内联/外联JavaScript做页面交互、使用JS组件

示例:已编写一个二级目录的form表单为例

  • 确保pages.config.js配置正确,如上 *创建devops-sample/com.primeton.devops.sample/src/webcontent/pages/home/form/index.html 文件
  • 可以参考NUI/minui的相关示例
  • 确保资源路径正确(注意:资源路径都是相对于eos context的路径,eos的项目context经常是default, 所以href="demo/css/foo.css"就等于href="/default/demo/css/foo.css")
    • css文件资源
    • javascript文件资源
    • 图片资源

启动前端框架

  • 启动EOS 本地服务器
  • 启动devops-fe-core cd 到devops-fe-core目录下,执行

    npm start
    

    启动成功后,访问localhost:8080/default/index.html

增删改页面

重复页面编写步骤,注意pages.config.js配置正确( 每次配置后,devops-fe-core会自动更新,不必重启)

示例

前端提供了示例项目共大家参考
Git 地址

运行

  • 导入到eos studio中
  • 重新启动前端框架

常见问题

  • 启动devops-fe-core报错? 答:确保已经按照上述安装步骤
  • 按照上述操作增删改了html文件或修改pages.config.js,可是不生效? 答:确保所有更新已经同步于eos server web root目录下,如果在eos studio外面编辑的,是不会同步到web root目录下的。
  • nui window需要与父页面进行数据同步? 答:在window里通过init方法拿到当前nui的window对象,需要数据同步的时候,调用该window对象的getOwner方法, 如 nuiWin.getOwner().getFn("parentFunction")(dataToSync) 或 nuiWin.getOwner().execFn("parentFunction", dataToSync) 注: 原nuiWin.getOwner().get/exec已经deprecated
  • javascript里动态加载html无法加html事件? 答:如果需要添加事件,html需要用双引号括起来, 如
var htmlInJS = "<button onclick='clickFn'>Click me</button>"
  • page scope是什么?
    答:每个页面里的自定义script需要添加page=scope属性,这样script里定义的函数、变量只会当前页面生效, 就不会污染global变量

  • 页面跳转及数据传输?

      答:页面跳转及数据传输使用nui.go\(path,{data}\)方法(使用案例见devops-sample\com.primeton.devops.sample\src\webcontent\pages  
      \home\grid\employeeList.html),  
     获取数据使用
    
       nui.getPathParams([pathname])

       //或

       nui.getParams([queryname]) (

使用案例见devops-sample\com.primeton.devops.sample\src\webcontent\pages\employee\detail.html)

此外还需要在pages.config.js中需要配置页面的urlPath等属性(其中urlPath: ":employeeid/detail"中的employeeid为传递参数名)

results matching ""

    No results matching ""