SAP 基于VUE的BSP OO单页移动端Web App开发

本文介绍了如何使用SAP的BSP应用,基于Vue.js实现一个OO设计的单页移动端Web App,强调了前后端分离和RESTful服务的设计。文章详细阐述了从资源和业务分开、利用Page Fragments复用HTML,到创建查询页面和RESTful服务的步骤,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

前言

之前的一篇文章,通过传统的Page with Flow Logic形式去实现了基于Vue的One Page Application。这种做法其实存在一些设计上的问题,前端页面交互层还好说,但后端服务层明显不符合RESTful设计风格,一个API居然还有View的代码?(二当家:帮主哇,我们不用OO,光去看人家的Page with Flow Logic,被同行知道了会笑我们变态的)咳咳,有鉴于此,恰好近日因肺炎推迟上班,被禁足在家,所以特别补全一个OO方式实现的例子。
注:本篇仍将实现一个查询库存的例子,但项目的结构、前端HTML页面代码以及SAP后端代码很多重要细节都与上一篇文章有所不同,请留意。

与传统BSP方式相比,OO实现BSP的方式有两点好处

  • 前后端逻辑可以完全分离,符合MVC,代码更易阅读和维护
  • 可以独立于页面实现类似RESTful风格的API,显得更专业

但受制于NetWeaver平台,BSP本身也还有如下缺点

  • 不能完全实现MVC,Model在BSP里面其实不存在,直接Open SQL完事。skr…skr…
  • 尽管能做成RESTful API,但分发还得通过SICF,一个服务一个Application。另外,个人猜测,可能并非所有的HTTP方法BSP都支持,但这个无伤大雅,一般HTTP POST日常也足够了。

GKD 搞快点

Step I 资源和业务分开

在上一篇中,我们将应用依赖的js和css文件都上传到了应用本身的目录下,但它们其实是可以被整个Package下的BSP应用共享的,如果你其它的BSP应用也引用了这些文件,那么类库的版本、前端样式能够统一,利于代码复用和后期维护,同时浏览器当发现资源来自同一个url时,不会去重复下载,节约带宽资源。基于这种种好处,也为了避免这些MIME中的文件被业务代码污染,笔者建议单独创建一个BSP应用,专门用于存储这些常用类库。见下:

01_01

为确保允许匿名访问,请注意去掉Application中缺省勾选的XSRF Protection。下面的YBSP_OO_DEMO也是同样的,不再赘述。
01_2

将这些公用的类库放到一个归口的应用后,我们就可以创建一个空的业务BSP应用,YBSP_OO_DEMO:
01_3

Step II 通过Page Fragments复用html

正如之前我们的BSP应用,Buefy控制前端控件样式的展现,Vue.js扮演Controller的角色来做渲染和事件处理,axios调用HTTP POST异步访问SAP Server。这三板斧是我们每次都会用到的,所以必定在每个应用的html header中引用到它们。虽说我们的例子目前只涉及一个前端页面,但实际生产环境中,随着业务复杂,一个应用中可能还会包含多个页面。为了减少重复的代码,我们把这个通用的html header代码存放到Page Fragments中,以利于后续的项目使用。
02_1

02_2
_header.htm的代码见下,代码中备注的信息请留意:

<%@page language="ABAP"%>
<!DOCTYPE html> <!--解决Safari中Buefy移动模式mobile card显示不正确的问题-->
<html>
  <head>
    <title>Inventory Report</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"><!--页面自适应移动端-->
    <meta name="format-detection" content="telephone=no"><!--防止纯数字被识别为手机号码-->
    <meta name="apple-mobile-web-app-capable" content="yes" ><!--Safari识别为Web应用-->
    <meta name="mobile-web-app-capable" content="yes"><!--Chrome识别为Web应用-->

    <link rel="icon" href="../YBSP_LIBRARY/monkey.png" type="image/x-icon"/> <!--页面图标-->
    <link rel="stylesheet" href="../YBSP_LIBRARY/buefy.min.css" /> <!--buefy-->
    <script src="../YBSP_LIBRARY/vue.js"></script> <!--vue.js-->
    <script src="../YBSP_LIBRARY/axios.min.js"></script> <!--axios-->
  </head>
  <body>
    <script src="../YBSP_LIBRARY/buefy.min.js"></script> <!--buefy-->
    <script src="../YBSP_LIBRARY/all.min.js"></script> <!--icon相关-->
    <div id="app"> <!--app 根节点-->

Buefy 支持两种icon类型,缺省是Materail Design Icon,而另一种是FontAwesome。最大的区别在于icon的实现机制不同。使用Material Design Icon,会有访问SAP服务资源导致弹出账号密码验证的问题,故放弃。使用FontAwesome,须要引入其js文件,即上面的all.min.js。这个文件,你可以在FontAwesome在Github上的代码库中找到并下载下载:https://github.com/FortAwesome/Font-Awesome
FA

Step III 创建查询页面

不同于传统方式,OO的BSP,我们创建的View是不带Flow Logic的。
03_1

main.htm的代码见下,它在头部引用了我们的Page Fragments。

<%@page language="abap"%>
<%@include file="_header.htm" %>
      <section class="section">

          <b-field label="Material Number" :label-position=
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于vue.js的移动端设计是一种应用vue.js框架开发移动端应用的设计方法。vue.js是一种轻量级、灵活、易学易用的JavaScript框架,可以用于构建用户界面。在移动端设计中,vue.js可以帮助我们实现响应式的界面设计,提供良好的用户体验。 基于vue.js的移动端设计具有以下特点和优势: 1. 组件化开发vue.js使得我们可以将页面划分为多个组件,每个组件都有自己的功能和样式。这样我们可以方便地对不同的组件进行修改和重用,提高开发效率。 2. 响应式设计:vue.js采用了双向数据绑定的方式,可以实时更新界面上的数据。这使得移动端应用能够根据用户的操作动态地改变界面显示,提供更好的交互体验。 3. 轻量级框架:vue.js的文件大小较小,加载速度快,适合用于移动端应用的开发。同时,它也具有良好的性能,可以在移动设备上流畅运行。 4. 强大的生态系统:vue.js拥有丰富的插件和第三方库,可以方便地扩展功能。这使得我们可以快速地添加一些常用的组件和工具,提高开发效率。 基于vue.js的移动端设计需要了解vue.js的基本语法和特性,并熟悉移动端开发的相关技术和工具。同时,还需要考虑移动设备的特点,如不同尺寸的屏幕、触摸操作等,来优化用户体验。在具体的项目中,我们可以使用vue-cli创建项目、使用vue-router进行页面导航、使用vuex进行状态管理等。 总之,基于vue.js的移动端设计可以帮助我们开发出高质量的移动应用,提供良好的用户体验。它是一种灵活、高效的设计方法,值得我们在移动端应用开发中探索和应用。 ### 回答2: 基于vue.js的移动端设计是指利用vue.js这个优秀的前端框架来构建适用于移动设备的网页或应用程序。vue.js是一个轻量级的框架,具有响应式设计和双向数据绑定的特性,非常适合用于开发移动端的用户界面。 使用vue.js可以提供更好的用户体验和性能表现。它的虚拟DOM机制可以高效地对应用的视图进行更新和渲染,减少了页面重新加载的次数,使得移动端的网页或应用程序更加流畅。 在开发移动端设计时,vue.js还提供了丰富的组件库,可以方便地构建各种移动端页面需要的交互元素和视图组件,例如按钮、表单、列表等。这样不仅可以快速构建界面,还能保持一致的设计风格,提高用户的使用体验。 另外,vue.js还支持移动端常用的触摸事件,可以通过监听用户的触摸手势来实现更多的交互效果。同时,vue.js也可以与其他常用的移动端开发工具和插件进行集成,例如打包工具webpack,移动端UI库Vant等,进一步丰富功能和提升开发效率。 总之,基于vue.js的移动端设计具有响应式设计、高性能、丰富的组件库和易于集成等特点,能够帮助开发者快速构建出优秀的移动端网页和应用程序。 ### 回答3: 基于Vue.js的移动端设计是一种使用Vue.js框架来开发移动端应用程序的方法。Vue.js是一种流行的JavaScript框架,它通过响应式的数据绑定和组件化的开发方式,可以简化移动端应用开发的复杂性。 首先,基于Vue.js的移动端设计可以利用到Vue.js强大的数据绑定功能。Vue.js使用了双向数据绑定的概念,它可以确保数据和视图的自动同步。在移动端设计中,我们可以将应用的数据和视图绑定起来,当数据发生变化时,视图会自动更新,从而提供更好的用户体验。 其次,基于Vue.js的移动端设计还可以充分利用Vue.js的组件化开发方式。组件化开发将应用的各个功能模块划分为独立的组件,每个组件都有自己的数据、视图和逻辑。这种方式有助于代码的复用性和维护性,同时也能提高开发效率。 另外,Vue.js还提供了一些移动端开发常用的插件和工具,例如Vue Router和Vuex。Vue Router可以用来管理移动端应用的路由,实现页面之间的跳转和导航;而Vuex则可以用来管理应用的状态,实现不同组件之间的状态共享。 总体而言,基于Vue.js的移动端设计具有简洁、高效和灵活等优点。它能够帮助开发人员快速搭建出结构清晰、交互流畅的移动应用,同时也为项目的维护和后续的扩展提供了便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值