学习Shiny和编辑调试Shiny程序你得养成查看HTML源代码的习惯。在前面的例子中你可能已经发现:写Shiny程序其实就是用“R语言的方式”编写网页。“R语言的方式”,就是函数的方式。Shiny把HTML很多页面元素代码的产生过程“包装”成了特定的函数,我们只需要调用这些函数就能产生固定模式的HTML代码。
事实上,shiny中能够使用的很多HTML相关的函数都不是shiny包自身提供的,本节介绍的函数全部来自htmltools包,shiny通过export方法包含到了它的包环境中,可以直接使用。如果需要查看这些函数的源代码,你得在htmltools中查找。
本节先介绍shiny/htmltools中产生HTML基本元素的方法/函数。
1 HTML()函数
这个函数就是paste函数的变形,它在htmltools包中的代码是这样的:
HTML <- function(text, ...) { htmlText <- c(text, as.character(list(...))) htmlText <- paste(htmlText, collapse=" ") attr(htmlText, "html") <- TRUE class(htmlText) <- c("html", "character") htmlText }
为了得到整洁的HTML代码,我先把paste函数的collapse参数改为“\n”,重新从源代码安装htmltools包。
它的作用很简单,直接把我们键盘敲入的内容连接成字符串,放到HTML文件body标签内,比如下面的shiny代码:
shinyApp( ui = HTML( '\n', '<div style="width: 600