第一个Polymer应用 - (1)创建APP结构

简介: 原文链接: Step 1: Creating the app structure翻译日期: 2014年7月5日翻译人员: 铁锚在本节中,将使用一些预先构建好的Polymer元素来创建基本的应用程序结构,包括一个工具栏(toolbar)和一些选项卡(tabs).
原文链接:  Step 1: Creating the app structure
翻译日期: 2014年7月5日
翻译人员: 铁锚

在本节中,将使用一些预先构建好的Polymer元素来创建基本的应用程序结构,包括一个工具栏(toolbar)和一些选项卡(tabs).

编辑 index.html 文件
进入根目录下面的 starter 目录中, 使用你喜欢的文本编辑器打开 index.html 文件, 文件的初始内容大致如下所示:
<!doctype html>
<html>


<head>
  <title>unquote</title>
  <meta name="viewport" 
    content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
  <script src="../components/platform/platform.js">
  </script>


  <link rel="import" 
    href="../components/font-roboto/roboto.html">
  ...
说明:
  • 本文件定义了一些基本的风格(styles)并嵌入了 platform.js 脚本文件,该脚本可以提供所有缺少的平台特性。
  • 元素 link rel="import" 是HTML中一种新的引入一个 html 文件作为资源的方式,称为 HTML Import.

略过中间的那些样式新鲜(style),在文件的底部,你会看到一些新鲜的东西:
  ...
<body unresolved touch-action="auto">


</body>
  ...
说明:

  • <body>元素的 unresolved 属性(attribute), 是为了防止 那些在浏览器中没有原生(native)支持的自定义的无样式元素(FOUC)发生闪烁(flash)而设计的。详情请参考 Polymer样式参考文档
  • touch-action="auto" 属性是为了确保在某些浏览器中妥善处理触摸事件。

-------------------------------------------------------------------------------------

接下来我们要在合适的位置添加一些 HTML import link 来引入   <core-header-panel>, <core-toolbar>, 以及 <paper-tabs> 元素:
  <script     src="../components/platform/platform.js">
  <link rel="import"     href="../components/font-roboto/roboto.html">
  <!-- 下面是需要添加的元素,如果乱码,请删除中文内容,或另存为UTF-8编码 -->
  <link rel="import"    href="../components/core-header-panel/core-header-panel.html">
  <link rel="import"    href="../components/core-toolbar/core-toolbar.html">
  <link rel="import"    href="../components/paper-tabs/paper-tabs.html">
说明
  • Polymer 使用 HTML imports技术 来加载组件。HTML imports提供了依赖管理,确保自定义元素及其所有的依赖项都在使用之前被加载进来。
  • 在原教程中,需要添加的代码使用黑色文字显示(因为 CSDN的 pre 限制,所以译文中请读者自己甄别)。
-------------------------------------------------------------------------------------

要增加一个工具条(toolbar), 可以在 body 标签内添加下面的代码:
  <core-header-panel>
    <core-toolbar>
    </core-toolbar>
    <!-- 主要的页面内容将会放在这里 --> 

  </core-header-panel>
保存后/部署后刷新页面,将看到顶部一个蓝色的工具栏.
说明:
  •  <core-header-panel> 元素是一个简单的容器,包含一个header(在本例中是<core-toolbar> 元素) 和一些内容。默认情况下, header 保持在屏幕的顶部,但也可以设置为随内容滚动。
  •  <core-toolbar> 元素作为容器,可以存放 选项卡(tab)的,菜单按钮以及其他控件。
-------------------------------------------------------------------------------------

添加选项卡(tab)
本应用将使用选项卡(tab,有时也称为标签)在两个不同的界面(view,标签页,视图)中切换, 包括一个消息列表(messages ), 以及一个收藏/关注列表(favorites). <paper-tabs> 元素的实现方式类似于 <select> 元素, 但显示出来是一些选项卡的集合.
  <core-header-panel>
    <core-toolbar>
	<!-- 添加一些选项卡,以paper-开头的是Material design风格的标签,具有很炫酷的效果 -->
	<paper-tabs valueattr="name" selected="all" self-end>
        <paper-tab name="all">所有</paper-tab>
        <paper-tab name="favorites">收藏</paper-tab>
      </paper-tabs>
    </core-toolbar>
    <!-- 主要的页面内容将会放在这里 --> 

  </core-header-panel>
保存/部署后刷新页面,将看到顶部工具栏以及两个选项卡,切换了试试?
说明:
  • 默认情况下, <paper-tabs> 通过索引(index)值来标识选中了哪一个子元素。valueattr="name" 指定它应该根据子元素的 name 属性来确定选中哪一个。
  • selected="all" 选择第一个选项卡(tab)作为初始的选项卡(因为第一个的 name="all")。
  • 在这里,子元素是 <paper-tab> 元素, 当你触摸时,这些元素改变样式,并显示“墨涟漪(ink ripple)”动画效果。
-------------------------------------------------------------------------------------

在文件的末尾(body里面)添加一个 <script> 标签来处理 tab 切换事件:

  <script>
    // 获取选项卡DOM元素 paper-tabs
    var tabs = document.querySelector('paper-tabs');
    // 添加事件监听, 很明显,你需要chrome浏览器来运行
    // 这里每次切换会触发2次,前一个tab取消选中,以及新tab被选中
    tabs.addEventListener('core-select', function(e) {
      //
      var detail = e["detail"] || {};
      var item = detail["item"] || {};
      var isSelected = detail["isSelected"];
      console.log(
        "Tab(\""+ item["innerText"] + "\") changeTo: "+ isSelected +"; [" + tabs.selected + "] isSelected " 
        );
    });
  </script>

说明

  •  <paper-tab> 元素在您选择一个tab时会触发 core-select 事件。你可以像一个内置元素一样可以和他交互。
  •  现在没有什么可切换的,稍后的小节您将完成这一点。
保存(建议编辑过程中随时保存,这是好的编码习惯)文件,部署,然后用chrome打开访问链接, 比如
http://localhost:8080/polymer-tutorial-master/starter/index.html

图 第一个Polymer app运行效果.

如果发生了什么错误,可以和 step-1 目录下的 index.html 文件进行对比,当然,你也可以直接访问那个文件试试。
在本节中,通过 HTML imports 来引入一些自定义的元素,并使用它们来创建了一个简单的 app 布局.
思考:  在 <paper-tabs> 中可以使用其他子元素吗,试试 <img> 或者 <span> 吧?

下一节
Step2: 第一个Polymer应用 - (2)创建你自己的元素

目录
相关文章
|
8月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
269 0
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1036 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
15211 81
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
10月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
586 1
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
10月前
|
存储 移动开发 监控
App Trace功能实战:一键拉起、快速安装与免提写邀请码的应用实践
App Trace系统通过一键拉起、快速安装和免提写邀请码三大功能,显著提升用户转化率、安装成功率和邀请注册率。结合深度技术实现与优化,助力公司用户增长,成为移动端核心基础设施。
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
1054 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
981 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
509 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
供应链 数据挖掘 API
1688APP 原数据 API 接口的开发、应用与收益
1688作为阿里巴巴旗下的B2B平台,汇聚海量供应商和商品资源。其APP原数据API接口为开发者提供获取商品详细信息的强大工具,涵盖商品标题、价格、图片等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建比价工具、供应链管理及自动化上架工具等应用,提升用户体验与运营效率,创造新的商业模式。示例代码展示了如何使用Python调用API并解析返回结果。
1293 8

热门文章

最新文章