• SharePoint 2013 开发——开发并部署第一个APP


    本篇我们开始对开发APP应用程序进行了解。

    本篇基于本地SharePoint环境(如果是Office 365的话会方便许多),需要配置一下APP的环境,具体参照霖雨大神的Blog

    开发APP的第一步,创建一个开发者网站集,操作方法跟我们创建其他的网站集几乎一样,选择好开发者网站的模版即可,我将在我的81端口下的Web应用程序下创建。

    在管理中心选择应用程序管理->创建网站集,选择81端口下的Web应用程序,模版选择开发人员网站,点击创建。

    接下来我们开始创建我们第一个APP,是的,Hello World,它没有什么实际的功能所以没有Bug,只是让我们对整个过程有个大致地了解和掌握

    打开Visual Studio 2015 RC(新装的系统,所以VS也安装了最新的版本,感受感受),新建项目,选择Office/SharePoint分类下的应用程序,选择SharePoint应用程序进行创建。

    点击确定按钮之后,在弹出的调试网站位置填写我们刚创建的开发人员网站的URL,选择SharePoint托管,点击下一步会提示输入凭据进行身份验证,输入完后点击确定,接下来选择应用版本,是2013还是O365,我们这里选择SharePoint 2013,点击完成。

    项目创建好之后结构如下图所示。

    我们可以看到创建出来的APP的ASPX页面并没有后台页面文件,因为APP是不支持服务端代码的。

    我们定位到主内容部分(PlaceHolderMain),它下面有一个DIV,上面注释了“运行该应用程序时会将以下内容替换为用户名 - 请参阅 App.js”,在Scripts文件夹中可以看到APP.js这个文件:

    'use strict';
    
    ExecuteOrDelayUntilScriptLoaded(initializePage, "sp.js");
    
    function initializePage()
    {
        var context = SP.ClientContext.get_current();
        var user = context.get_web().get_currentUser();
    
        // 此代码在 DOM 准备就绪时运行,并且可以创建使用 SharePoint 对象模型所需的上下文对象
        $(document).ready(function () {
            getUserName();
        });
    
        // 此函数准备、加载然后执行 SharePoint 查询以获取当前用户信息
        function getUserName() {
            context.load(user);
            context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail);
        }
    
        // 如果上述调用成功,则执行此函数
        // 此函数将“message”元素的内容替换为用户名
        function onGetUserNameSuccess() {
            $('#message').text('Hello ' + user.get_title());
        }
    
        // 将在上述调用失败时执行此函数
        function onGetUserNameFail(sender, args) {
            alert('Failed to get user name. Error:' + args.get_message());
        }
    }
    

    它做了一个简单的用户名的查询,并显示到页面的P标签上。

    本篇中我们只想显示我们的Hello,不对对象模型做过多介绍。在div节点的下面添加一个P标签,文字内容填写“This is our first SharePoint app!”。完成之后Main中的代码如下所示:

    <div>
            <p id="message">
                <!-- 运行该应用程序时会将以下内容替换为用户名 - 请参阅 App.js -->
                initializing...
            </p>
        </div>
        <p>This is our first sharepoint APP!</p>
    

    在运行我们第一个APP之前,我们先来了解一下SharePoint应用程序项目模版的结构:

    Features文件夹

    跟以往的版本一样,内有清单文件和Feature定义文件,用来定义SharePoint的Feature。

    Package文件夹

    全新的SharePoint 2013应用程序包设计器,跟Feature设计器很相似,包含一个manifest清单文件定义SharePoint应用程序的细节,实际上跟以往的版本也并无太大差异。

    Content文件夹

    包含默认的APP.css样式文件和一个清单定义文件。新的样式文件等内容可以添加到此处。

    Images文件夹

    顾名思义,用来存放图片。

    Pages和Scripts文件夹

    同样,看名即懂,用来存放页面和脚本文件。

    最后两个是AppManifest.xml和packages.config文件。其中,双击AppManifest.xml文件会打开一个设计器,用来配置APP。

    回到之前,我们完成的Hello World应用程序,按下F5进行部署,会收到如下的错误:

    因为我们使用的是场用户(系统账户),SharePoint不允许使用系统账户进行APP的安装和卸载操作。在域控中新建一个用户,将该用户添加到开发机的本地管理员组,并添加到场管理员组。

    这个问题困扰了我一整天,Google到的解决方案都是以域内服务器为基础的,但是我的SharePoint在VM中,而Visual Studio在本机域外,这里有一篇很详细的排错过程,如果域内服务器开发遇到了问题可以进行参照

    很遗憾域外部署如何处理我还没有找到办法,后来仔细回味一下也许是行不通的吧,按照上面的排错过程在SharePoint域内服务器开发是可以部署的,F5启动浏览器之后,页面无法显示,或者显示404 Not Found,这个或许由于SharePoint APP开发环境没有配置正确,我在第一次配置的时候不小心将CNAME指向了AD服务器而不是SP的服务器。仔细检查一下配置,修正后再次按F5就可以看到我们开发的APP的页面了,同样只在域内服务器可以访问,我在本机域外访问就提示该页无法显示。

    注:本篇只是从技术角度阐述实现APP的一种方式,并不完全适用于实际应用,如应用程序目录等内容本篇并没有提及。

    鉴于本地服务器的做起来略麻烦,下一篇可能会考虑基于O365啦:)

    
  • 相关阅读:
    git使用
    onethink常用标签的使用示例
    thinkphp中 select() 和find() 方法的区别
    CSS3Ps -Photoshop图层特效转CSS3代码
    普通公司网站代码片段合辑
    IE hack大全
    PHP四种基础算法详解:冒泡,选择,插入和快速排序法
    PHP编程效率的20个要点
    php实现AES/CBC/PKCS5Padding加密解密(又叫:对称加密)
    浏览器桌面提醒,适用于网站“新消息提醒”
  • 原文地址:https://www.cnblogs.com/justinliu/p/5961618.html
Copyright © 2020-2023  润新知